javascript - 如果单词后最后删除的字母是空格,则阻止 if 语句

标签 javascript jquery

$('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 语句触发器中的空格 ,我想防止这种情况发生,我该怎么办那?

最佳答案

$('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 '>

关于javascript - 如果单词后最后删除的字母是空格,则阻止 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47858326/

相关文章:

javascript - 脚本执行时的模态加载消息

javascript - 如何在 Firebase 中运行 PHP 脚本?

javascript - 获取不断变化的图像宽度的即时更新

javascript - 单击后更改 ID

IE8 中的 Javascript 非常慢,IE7 + 其他使用 jQuery、jQuery UI、nyroModal 的速度很快

javascript - 使用 jQuery/Javascript 通过 id 下载文件

javascript - 使用 Firefox,我如何监控所有触发的事件?

javascript - 调试非侵入式验证(客户端)

php - 如何根据另一个获取的结果从数据库中的不同表获取数据

javascript - 使跟踪代码从 URL 栏中消失