0

jQuery是否可以发现用户何时在搜索框中输入了第一个字符,然后无论他们使用什么键盘语言或设置都会提示警报@#

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

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

jQuery

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

3 回答 3

2

如果要测试输入中的第一个字符是否是其中一个字符,则不要测试刚刚输入的字符,而是测试第一个字符:

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

请注意,最好在模糊(甚至在提交表单时)而不是在每次击键时这样做,因为这对用户来说不那么烦人,而且因为它可以应付复制/粘贴或拖放.

于 2012-07-11T09:40:47.743 回答
1

只有keypress事件报告了一个可靠的值:http event.which: //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)可用于获取键入的字符。

于 2012-07-11T09:38:12.190 回答
1

您必须将事件更改为 bind 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/

于 2012-07-11T09:45:11.787 回答