使用 keydown() 为什么在第一个字符之后如果警告值为空?

Using keydown() why after first character if alert the value is empty?

如果我(第一次)按一个字符,则警报会打印一个空值。

怎么可能?没看懂。

$('#search-vulc').on('keydown', function() {
  var textinsert = ($(this).val()).toLowerCase();
  alert(textinsert);
});

请告诉我如何在第一次按下字符时打印它。

这里还有一个 jsfiddle 示例:

https://jsfiddle.net/06xg4c78/1/

改用keyup

$('#search-vulc').on('keyup', function() {

  var textinsert = ($(this).val()).toLowerCase();
  alert(textinsert);

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>

<input type="text" size="150" style="width: 150px;" name="qu" id="search-vulc">

已更新 fiddle:https://jsfiddle.net/06xg4c78/2/

使用keuyp事件:

这是因为 keypress events 在新字符添加到元素的值之前被触发(所以第一个 keypress event 在第一个字符被添加之前被触发,而值仍然是空的)。您应该改用 keyup,它会在添加字符后触发。

$('#search-vulc').on('keyup', function() {
  var textinsert = ($(this).val()).toLowerCase();
  alert(textinsert);
});

如果您使用 keydown 函数,它会在 dom 获取输入值之前起作用

使用 keyup,它会在您离开键时触发事件,这样它将获得输入的值

$('#search-vulc').on('keyup', function() {
  var textinsert = ($(this).val()).toLowerCase();
  alert(textinsert);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<input type="text" size="150" style="width: 150px;" name="qu" id="search-vulc">