它不会“禁用”后退箭头——你的代码会不断地替换所有文本,每当你按下一个键,每次发生时插入符号位置都会丢失。
不要那样做。
使用更好的机制来禁止空格,例如当按下的键是从 onkeydown 处理程序返回false
space
:
$(function() {
$("input#Username").on("keydown", function (e) {
return e.which !== 32;
});
});
这样,您的文本框首先被禁止接收空格,您不需要替换任何文本。因此,插入符号将不受影响。
更新
@VisioN的改编代码还将将此空间禁止支持添加到复制粘贴操作,同时仍然避免keyup
影响您的文本框值的text-replacement-on-处理程序,而您的插入符号仍在其中。
所以这是最终的代码:
$(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.
});
});