如何使用 jQuery 从字符串中删除特定字符时禁用删除按键或退格键。例如,当光标处于hypen时,从字符串1234-555,如果按下删除键,则不应删除hypen。而不是光标应该保持在相同的位置。基本上在连字符处禁用删除键。以同样的方式当光标在hypen之后时,如果按下退格键,它不应该删除hypen。而不是光标应该保持在相同的位置。
答案 0 :(得分:1)
当然,请使用keydown
事件。
编辑:要在文本框中获取光标的当前位置,您需要使用以下功能(由@CMS提供不少):
function getCaret(el) {
if (el.selectionStart) {
return el.selectionStart;
} else if (document.selection) {
el.focus();
var r = document.selection.createRange();
if (r == null) {
return 0;
}
var re = el.createTextRange(),
rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint('EndToStart', re);
return rc.text.length;
}
return 0;
}
现在,回到我原来的答案:
var nobackspace = ['-'];
$(element).keydown(function(e) {
if(e.keyCode == 8) {//backspace key was pressed
var pos = getCaret(this);
if(pos > 0) pos--; //just a precaution so we don't get a negative number
if(!jQuery.inArray($(this).val().charAt(pos), nobackspace)) return false;
}
});