2013-03-22 57 views
2

我打电话.keyup搜索文本框的功能,并在那keyup(),我刷新数据库中的GRID。如何在JavaScript中提取特殊键?

问题:

但网格是越来越刷新的(特殊键也行)方向键,数字键锁定功能键和其他按键和清爽的这些键是不必要的。除了退格,退回,制表符,空格,删除。

我想构造一个正则表达式,以便过滤出所有的控制键。

示例代码:

$('#searchContent').keyup(function (e) { 
    var key = e.which; 
    if (/*condition*/) { 
     return; 
    } 
    //my code goes here... 
} 

我做了什么:

搜索网彻底,我想出了hotkey,但这并不解决我的目的。那么,任何聪明的正则表达式在那里?

+3

也许你应该使用'onchange'事件? – RJo 2013-03-22 11:16:52

+3

@RJo'onchange'只会在模糊afaik上触发。 – 2013-03-22 11:24:57

+0

@Rjo现在只有我注意到杰克说的话。 – 2013-03-22 11:27:14

回答

0

试试这个HTML,看看哪些代码匹配与键(从Mozilla拍摄):

<html> 
<head> 
    <title>charCode example</title> 

    <script type="text/javascript"> 

     function showChar(e) 
     { 
      alert("Key Pressed: " + String.fromCharCode(e.charCode) + "\n" 
        + "charCode: " + e.charCode); 
     } 

     </script> 
    </head> 

    <body onkeypress="showChar(event);"> 
     <p>Press any 'character' type key.</p> 
    </body> 
</html> 
+0

或使用jquery [LINK](http://api.jquery.com/keyup/)的此链接... :) – 2013-03-22 11:36:24

+2

但是,当前在此答案中使用的'keypress'事件可能不会触发删除或退格。 .. – nnnnnn 2013-03-22 11:36:31

+0

它将在chrome和id incase of delete或backspace中失败 – 2013-03-22 11:58:30

0

试试这招:

function checkForChanges(){ 
    var txt = $('#searchContent'); 
    if(txt.val() != txt.attr('xvalue') { 
     //do referesh grid content here 
    } 
} 

$('#searchContent').keyup(function (e) { 
    $(this).attr('xvalue') = this.value;  
    clearTimeout(this.changeTimer);  
    this.changeTimer = setTimeout(checkForChanges, 20); 
}