它不会“禁用”后退箭头——每当您按下一个键时,您的代码都会彻底替换所有文本,并且每次发生这种情况时,插入符号的位置都会丢失。
不要那样做。
使用更好的机制来禁止空格,例如当按下的键为时从 onkeydown 处理程序返回false
space
:
$(function() {
$("input#Username").on("keydown", function (e) {
return e.which !== 32;
});
});
这样,您的文本框首先被禁止接收空格,并且您不需要替换任何文本。因此插入符号将不受影响。
更新
@VisioN的改编代码还将这种空间禁止支持添加到复制粘贴操作,同时仍然避免文本替换keyup
处理程序会影响您的文本框值,而您的插入符号仍处于活动状态。
所以这是最终的代码:
$(function() {
// "Ban" spaces in username field
$("input#Username").on({
// When a new character was typed in
keydown: function(e) {
// 32 - ASCII for Space;
// `return false` cancels the keypress
if (e.which === 32)
return false;
},
// When spaces managed to "sneak in" via copy/paste
change: function() {
// Regex-remove all spaces in the final value
this.value = this.value.replace(/\s/g, "");
}
// Notice: value replacement only in events
// that already involve the textbox losing
// losing focus, else caret position gets
// mangled.
});
});