如果一个单词是空格后的最后删除的字母,则防止if语句

问题描述 投票:1回答:1

$('input').keyup(function(){
  if (/^([a-z\d] ?)+[a-z\d]$/i.test(this.value)) {
    alert('True');
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type='text' value='Ended with Space '>

在我的脚本在这里,如果你按下backspace删除其中的空白 if-statement triggeres,我想防止这种情况发生,我怎么能这样做?

javascript jquery
1个回答
0
投票

$('input').keyup(function (evt) {
  if (evt.keyCode === 8) return;
  if (/^([a-z\d] ?)+[a-z\d]$/i.test(this.value)) {
    alert('True');
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type='text' value='Ended with Space '>

请注意,.keyCodedeprecated,但可能仍适用于大多数浏览器。 MDN目前建议在实施时使用KeyboardEvent.code,但在撰写本文时仍然部分缺乏浏览器支持。

这是使用.code的示例:

$('input').keyup(function (evt) {
  if (evt.originalEvent.code === 'Backspace') return
  if (/^([a-z\d] ?)+[a-z\d]$/i.test(this.value)) {
    alert('True');
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type='text' value='Ended with Space '>

有趣的是,jQuery(至少在上面的版本中)没有在事件对象上公开code,所以你必须通过originalEvent访问它。

最后,为了完整性比较keypress事件的行为(评论中的每个注释):

$('input').keypress(function (evt) {
  if (/^([a-z\d] ?)+[a-z\d]$/i.test(this.value)) {
    alert('True');
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type='text' value='Ended with Space '>
© www.soinside.com 2019 - 2024. All rights reserved.