在输入中发现#或@

时间:2012-07-11 09:36:50

标签: javascript events javascript-events jquery

当用户在搜索框中输入第一个字符@#时,是否可以发现jQuery,无论他们使用什么键盘语言或设置,都会提示警告?< / p>

例如,如果我在搜索框中输入@,我希望它能够提示消息或执行我的操作。

​<input type='text' name='search' id='search' />​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

jQuery

$("#search").keydown(function(event) {
    alert(event.which);
});​

3 个答案:

答案 0 :(得分:2)

如果你想测试输入中的第一个字符是否是其中一个字符,那么不要测试刚输入的字符,测试第一个字符:

$("#search").on("blur", function() {
    if (/^[@#]/.test(this.value))
       alert("@ or # entered.");
});

请注意,最好在模糊(甚至提交表单)而不是每次击键时都这样做,因为这样会对用户不那么烦恼,因为它可以应对复制/粘贴或拖动' n'drop。

答案 1 :(得分:1)

只有keypress event报告event.which的可靠值:http://jsfiddle.net/QDCvG/

$("#search").keypress(function(event) {
    // @ = 64, # = 35
    if ((this.value.length === 0 || this.selectionStart === 0)
     && (event.which === 64 || event.which === 35)) {
        // keypress fires before the field is populated
    }
});​

String.fromCharCode(event.which)可用于获取键入的字符。

答案 2 :(得分:1)

您必须将事件更改为绑定keyup,即使释放了两个键,它也会触发事件。 .charAt(0)方法将检查输入框的第一个字符。

$("#search").keyup(function(event) {
     var curKey = $(this).val();

     if (curKey.charAt(0) == '@' || curKey.charAt(0) == '#')
     {
         alert('@ or # typed first!');
     }
});

现场:http://jsfiddle.net/yHcVH/