我试图制作一个jQuery方法,从所选元素中删除想要的字符。
例如:
$("input").disallowChars(/\D/g);// should disallow input of all non-digit elements in input elements
这就是我想的方法,但它似乎不起作用:
$.fn.disallowChars = function(regexp){
this.keyup(function(){
var value = $(this).val();
value.replace(regexp, "");
$(this).val(value);
});
return this;
};
$("input").disallowChars(/\D/g);
我是一个新手,我怎么能让它发挥作用。
由于
答案 0 :(得分:1)
这是一个方便的例程,用于清理当前项目中的一些输入字段:
// REPLACE SELECTOR WITH YOUR ID(S) OR SELECTORS...
$('input').bind("change keyup", function() {
var val = $.trim($(this).val());
// READ UP ON REGEX TO UNDERSTAND WHATS GOING ON HERE... ADD CHARACTERS YOU WANT TO ELIMINATE...
var regex = /[":'/\+;<>&\\/\n]/g;
if (val.match(regex)) {
val = val.replace(regex, "");
$(this).val($.trim(val));
}
});
这是我最近使用的另一个版本:
$("#myField").on("keypress", function(event) {
// THIS ONLY ALLOWS A-Z, A-Z, 0-9 AND THE @ SYMBOL... just change stuffToAllow to suit your needs
var stuffToAllow = /[A-Za-z0-9@ ]/g;
var key = String.fromCharCode(event.which);
if (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || stuffToAllow.test(key)) {
return true;
}
alert( key + ' character not allowed!');
return false;
});
答案 1 :(得分:1)
您可以改为使用String.fromCharCode()
和keypress
事件:
$.fn.disallowChars = function(regexp){
return this.keypress(function(e){
if(String.fromCharCode(e.which).match(regexp)) return false;
});
};
但不会使用鼠标或粘贴键盘快捷键禁用任何要粘贴的字符。
在现代浏览器中,您可以使用input
事件或change keyup paste mouseup
(鼠标,也可以处理删除的文本):
$.fn.disallowChars = function(regexp){
return this.on('input', function(){
this.value = this.value.replace(regexp, '');
});
};
但是然后一旦输入值被替换,文本carret将被放入字符串输入的结尾(或开始取决于浏览器行为)。