简单的Keypress事件不适用于文本框

时间:2014-11-24 07:19:27

标签: javascript jquery html

我有一个文本框,其中我为Enter键写了按键功能,它应该显示警告。

这是我的HTML和脚本。

这是我的文本框:

<li>
<input type="text" class="fi_top" placeholder="Howdy" id="howdy" value="">
</li>

在页面内我有

脚本:

$( "#howdy" ).keypress(function( event ) 
{
  if ( event.which == 13 ) {
  alert('okay');
}
});

但是当我在文本框中输入时,我没有收到警报。

我正在做的错误是什么?如何解决这个问题?

4 个答案:

答案 0 :(得分:7)

我认为你是在HTML中动态添加这个元素而.keypress只适用于预加载的元素。 jQuery为动态添加元素提供了$(document).on。

$(document).on("keypress", "#howdy", function (e) {
    if (e.keyCode == 13 || e.which == '13') {
       //Do your work
    }
});

答案 1 :(得分:1)

嘿,你应该尝试这样的keypress事件

$("#howdy").keypress(function() {
  var keycode = (event.keyCode ? event.keyCode : event.which);
    if (keycode == '13') {
        callAjaxGetJoiningDate($(this).val());
        event.preventDefault()
    }
 });

答案 2 :(得分:1)

尝试

event.KeyCode == 13

JS代码:

$( "#howdy" ).keypress(function( event ) 
{
  if ( event.keyCode == 13 ) {
  alert('okay');
}
});

请参阅此fiddle

答案 3 :(得分:1)

将它放在document.ready块中,以便在整个dom加载后触发。最后使用defer属性标记脚本。

你应该同时使用which和keyCode,因为它们不适用于所有浏览器。

$( "#howdy" ).keypress(function( event ) 
{
  if ( event.which == 13 || event.keyCode == 13) {
  alert('okay');
}
});