如果我最初按一个键,它会触发按键事件,但它不会在其中提供值。

时间:2017-08-18 23:52:41

标签: jquery

如果我最初将值“a”传递给输入框,则会触发按键事件,但它不会在其中提供值。但如果我再次将第二个值“b”传递给输入框,则它再次触发按键事件,但它不会给出当前值(b在这种情况下为当前输入),而是将前一个值作为输出。     ================================================== =========================

   <!DOCTYPE html>
<html>
<head>
    <title>stop Propagation</title>
    <script
  src="https://code.jquery.com/jquery-3.2.1.min.js"
  integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
  crossorigin="anonymous"></script>
</head>
<body>

<div class="container">

<button id="myBtn">click me </button>
<div class="test">
<h1>click this</h1>
</div>

<input type="text">

</div>
<script type="text/javascript" src="stopPro.js"></script>
</body>
</html>`

Java脚本 - (stopPro.js) - &gt;这里

$("input[type='text']").click(function(event)
{
    event.stopPropagation();
}
);


$("input[type='text']").keypress(function()
    {   
        console.log("key pressed");
        console.log(this.value);

      }
    );

here is the output

1 个答案:

答案 0 :(得分:0)

这是操作顺序的问题。

在按下键时会触发

keypress(尽管jQuery API指出,这种行为因浏览器而异)。因此,当触发console.log时,输入的值实际上尚未更新。我已经更新了我的示例中的keypress事件,通过查看event以查看按下了哪个键来显示使用它的有用方法。

相反,为了检查输入的值,您可以使用keyup,它会在用户释放键盘键时触发,并在键入键后触发。

$("input[type='text']").click(function(event) {
    event.stopPropagation();
  })
  .keypress(function(event) {
    console.log('keypress (key)', event.key);
  })
  .keyup(function() {
    console.log('keyup (value)', this.value);
  });
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>


<div class="container">

  <button id="myBtn">click me </button>
  <div class="test">
    <h1>click this</h1>
  </div>

  <input type="text">

</div>