-1

可能重复:
jQuery 事件按键:按下了哪个键?

每当用户在文本框中键入新的空格字符时,我都会使用下面的代码来触发警报。这一直有效,直到用户进入第一个空格,因为将为每个后续空格触发警报。

对于此 String : 'test ',警报将被触发一次,这是正确的

对于此 String : 'test test' 警报将被触发 5 次,但它应该只触发一次。

对于这个 String : 'test test test',警报应该被触发 3 次。

如何修改下面的代码,以便每个新空格字符只触发一次警报?

$("#myDiv").keyup(function() {    
    if$("#myDiv").val().indexOf(' ') != -1)
    {
        alert("space found");
    }   ​
};
4

3 回答 3

4

将事件对象传递给回调函数,并测试e.which == 32keycode 32(空格)

// keyup callback receives the Event object e
$("#myDiv").keyup(function(e) {
    // When the key pressed was space, alert...
    if (e.which == 32)  {
        alert("space found");
    }   
});​

http://jsfiddle.net/DL5pX/

于 2012-12-22T02:17:55.897 回答
1

怎么样:

$("#myDiv").keyup(function() {

    var val = $(this).val(),
        len = val.length - 1;

    if (val[ len ] == ' ') {
        alert("space found");
    }

});

jsFiddle 演示

于 2012-12-22T02:16:30.080 回答
0

您可以通过以下代码执行此操作,

var x = false;
$(function() {
  $(document).keyup(function(e) {
    if (e.keyCode == 32) {
      x = false;
    }
  }).keydown(function(e) {
    if (e.keyCode == 32) {
      x = true;
      alert('space pressed!!');
    }
  });
}
于 2012-12-22T02:20:14.117 回答