2016-07-29 66 views
0

我有下面的代码 - 它有一些临时警报在那一刻,因为我试图让这个问题的底部。KEYDOWN不烧铬移动

该功能基于Asp.Net文本框和RequiredFieldValidator。这个想法是当按'enter'时,我得到文本框的状态并做一些事情。

现在,这里的怪位:

如果我在文本框使用标准型=“文本” - 其实我不加这个它只是默认,它适用于所有的浏览器/设备。

作品,我的意思是如果我没有把一个有效的条目,即任何东西在文本框中,应该显示一个错误。

如果我使用type =“tel”或type =“number”,它适用于Firefox和Chrome桌面,但不适用于移动设备上的Chrome。

如果我按照下面的代码添加警报,那么移动设备也可以工作。

function enterKeyPressed(e) { 
     alert("function called"); 
     if (e.which == 13) { 
      alert("enter pressed"); 
      var isValid = updateInputState.call(this, false); 
      alert(isValid); 
      if (isValid) { 
       var next = findNextTabStop.call(this); 
       next.focus(); 
      } 
     } 
    } 

任何人都知道我可以从哪里开始?

回答

1

这里是为我工作 - 桌面,移动和所有的HTML5输入类型。

function enterKeyPressed(e) { 
     if (e.which == "13") { 
      e.preventDefault(); 
      // Do something 
     } 
    } 
0

尝试使用key代替which

function enterKeyPressed(e) { 
    alert("function called"); 
     if (e.key == "Enter") { 
     alert("enter pressed"); 
     var isValid = updateInputState.call(this, false); 
     alert(isValid); 
     if (isValid) { 
      var next = findNextTabStop.call(this); 
      next.focus(); 
     } 
    } 
} 
+0

刚刚尝试过相同的结果。 –

+0

这很奇怪 - 如果我删除了type =“tel”,它就可以工作。 –

+1

似乎已经到底了 - 数字键盘的“输入”键是9而不是13 !!! –