问题 检测输入某个类的输入元素


我需要检测某人是否在具有特定类的文本输入中“输入”。

我的jQuery如下:

$('input.large').keypress(function (e) {
    if(e.which ==13)
        console.log("pressed enter");
});

我的HTML是这样的:

<tr><td> Personal Name </td></tr>
<tr><td> <input type='text' class='large'> </td></tr>

<tr><td> Email</td></tr>
<tr><td> <input type='text' class='large'> </td></tr>

当我给出字段ID并尝试 $('#elementid').keypress 有效。但这不起作用。我没有控制台输出。我错过了什么?


4575
2017-12-14 18:04


起源

您是否将代码放在文档就绪处理程序中? - undefined
我有。在此之前和之后的其他代码工作正常。 - user961627
你能提供一个演示吗? jsfiddle.net? - undefined
应该管用 - jsfiddle.net/vYfGQ - Zoltan Toth
我知道......这段代码没什么问题。我无法粘贴所有代码,因为它太多了,必须有一些东西阻止它。 - user961627


答案:


你可以使用直播(。上())中的事件 document 同 keydown (我认为这更好)。它会让你发现 keydown 在与选择器匹配的当前和未来元素中。

HTML

<strong>Personal Name</strong>
<input type='text' class='large' /><br />

<strong>Email</strong>
<input type='text' class='large' />
​

JS (使用jQuery 1.7+运行):

jQuery(document).on('keydown', 'input.large', function(ev) {
    if(ev.which === 13) {
        // Will change backgroundColor to blue as example
        this.style.backgroundColor = '#EFF';

        // Avoid form submit
        return false;
    }
});

的jsfiddlehttp://jsfiddle.net/qvhWD/


10
2017-12-14 18:20



我应该把它放在哪里呢?我在里面尝试过 $(document).ready(function(){...}); 并且也在它之外,但无论哪种方式都存在语法错误。 - user961627
这种语法错误在哪里? 尝试一下:创造一个独家 <script> 文件末尾包含此内容的元素。如果它不起作用,请使用Chrome并启用调试以确切地知道错误的位置。 - David Rodrigues
在行尾有一个隐藏的(零宽度)unicode字符:\u200b。看起来像换行符: stackoverflow.com/a/7077279/295246 我知道这是旧的,但我想我会分享! :) - HEADLESS_0NE


检查一下: http://jsfiddle.net/EJyyr/

使用这个HTML:

<tr><td> Personal Name </td></tr>
<tr><td> <input type='text' class='large' id='a'> </td></tr>

<tr><td> Email</td></tr>
<tr><td> <input type='text' class='large' id='b'> </td></tr>

这是jQuery which logs the input text id

$('.large').keypress(function (e) {
   if(e.which ==13)
    console.log($(this).attr('id'));
});

2
2017-12-14 18:19





感谢David Rodrigues的解释。它帮助了很多。我不得不升级我的JQuery库,并停止.live()函数正常工作。

您可以将它用于以下内容

单击select_all_checkboxes输入类型复选框时,选择表单的所有复选框输入:

jQuery(document).on("click", "#select_all_checkboxes", function(){
    var chk = this.checked;
    $('input[id=selectAll]').each(function(){
        this.checked = chk;
    });
});

当用户使用tab键点击任何具有类名“email”的字段时,调用函数“checkMail”:

jQuery(document).on("blur", 'input.email', function(event){
    var email = $(this).val();
    if (!checkMail(email)) {
        alert("Invalid email.");
        $(this).focus();
    }
});

0
2017-07-06 20:02



虽然您的答案很受欢迎,但对其他用户答案的​​评论应该就是这样。 - J0e3gan