$('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,我想防止这种情况发生,我怎么能这样做?
$('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 '>
请注意,.keyCode
是deprecated,但可能仍适用于大多数浏览器。 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 '>