【问题标题】:Simple Keypress Event Not working for textbox简单的按键事件不适用于文本框
【发布时间】:2015-01-21 20:39:05
【问题描述】:

我有一个文本框,我在其中编写了 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');
}
});

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

我做错了什么,我该如何解决?

【问题讨论】:

  • 尝试使用 event.keyCode == 13
  • 我刚才也试过了..但没用:(
  • keyCode 大写 C。看我的回答。
  • 你是在运行时添加元素还是加载页面内容
  • 您的代码正在运行,您是否将 jquery 库包含到您的页面中。这是你的代码jsfiddle.net/v3fggs1w

标签: javascript jquery html


【解决方案1】:

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

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

【讨论】:

  • 效果很好!我可以知道它不起作用的原因吗??
【解决方案2】:

嘿,你应该试试 keypress 这样的活动

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

【讨论】:

  • 我试过这个 $('#howdy').keyup(function() { alert('okay'); });但不工作
【解决方案3】:

试试

event.KeyCode == 13

JS 代码:

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

看到这个fiddle

【讨论】:

  • keyCode 在旧 IE 中不起作用,所以你应该同时使用。
  • 它在小提琴中运行良好,但在我的代码中它失败了,我正在寻找这个原因 sri
  • @Bizz 你能说说你的浏览器名称和版本吗?
  • 它的firefox晚了,但是代码在单独的.js页面中,重要吗?
【解决方案4】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多