Javascript 防止删除文本框中的特殊字符
我想防止用户在按下Javascript 防止删除文本框中的特殊字符,javascript,jquery,Javascript,Jquery,我想防止用户在按下backspace或canc时删除文本框中的任何“/”字符 例如: 如果文本框值为2014/09/,并且用户按backspace键,则“/”字符将不会被删除 如何在keypup或keypdownevenets中执行此操作 $("#textboxId").keyup(function(){ // any idea }); 我已经用字符串操作完成了 在这里检查我的小提琴 希望这对您有所帮助您有三种情况: 用户按下backspace并删除光标前的字符 用户按下canc并删
backspace
或canc
时删除文本框中的任何“/”字符
例如:
如果文本框值为2014/09/
,并且用户按backspace键,则“/”字符将不会被删除
如何在keypup
或keypdown
evenets中执行此操作
$("#textboxId").keyup(function(){
// any idea
});
我已经用字符串操作完成了 在这里检查我的小提琴
希望这对您有所帮助您有三种情况:
backspace
并删除光标前的字符canc
并删除光标后的字符backspace
或canc
删除所选文本$('#textareaId')[0].addEventListener("keydown", function(e) {
var start = this.selectionStart,
end = this.selectionEnd,
value = this.value,
key = e.keyCode;
if (key == 8 && value[start-1] == '/') e.preventDefault();
if (key == 46 && value[start] == '/') e.preventDefault();
if ((key == 8 || key == 46) && value.substring(start, end).indexOf('/') != -1) e.preventDefault();
}, false);
工作示例:给你=>
(function ($, undefined) {
$.fn.getCursorPosition = function() {
var el = $(this).get(0);
var pos = 0;
if('selectionStart' in el) {
pos = el.selectionStart;
} else if('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
}
})(jQuery);
$("#textboxId").keydown(function(e){
var currentPos=$(this).getCursorPosition();
var lastChar=$(this).val().substr((currentPos- $(this).val().length)- 1);
if(e.which==8 && lastChar.match(/^\//g) ){
e.preventDefault();
return false;
}
});
我从函数中获得了一些帮助,以确定光标的当前位置
注意到,在反对所有其他答案和想法的情况下,这实际上会像掩码一样工作,即使光标在文本的中间也不会被删除! 你不想删除
/
?我建议你使用我想这就是你想要的require@Khaleel是的,我不想删除/@Satpal我不想使用mask pluginga如果将文本框值作为字符串获取,则获取最后一个/,,并将子字符串设置为文本框的新值?你让它变得非常复杂。@MarcoBonelli是的,因为我希望它在所有情况下都能正常工作。如果你将插入符号放在开头并使用CANC键,它将删除所有文本…@AminJafari我没有选择jQuery库,对不起。它现在很好用,几乎可以用了。问题是,当我完全选择文本框并键入将删除/也删除的内容时,它在select+delete上运行良好。@MarcoBonelli,这是预期的解决方案。你怎么说它不起作用?
(function ($, undefined) {
$.fn.getCursorPosition = function() {
var el = $(this).get(0);
var pos = 0;
if('selectionStart' in el) {
pos = el.selectionStart;
} else if('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
}
})(jQuery);
$("#textboxId").keydown(function(e){
var currentPos=$(this).getCursorPosition();
var lastChar=$(this).val().substr((currentPos- $(this).val().length)- 1);
if(e.which==8 && lastChar.match(/^\//g) ){
e.preventDefault();
return false;
}
});