jQuery方法,该方法禁止输入某些字符

jQuery method that disallows input of certain chars

本文关键字:方法 字符 jQuery 禁止输入      更新时间:2023-09-26

我试图使一个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);

我在这方面完全是个新手,我该怎么做呢?

谢谢

您可以使用String.fromCharCode()keypress事件:

$.fn.disallowChars = function(regexp){
  return this.keypress(function(e){
      if(String.fromCharCode(e.which).match(regexp)) return false;
  });
};

演示

BUT不禁用任何字符粘贴到使用鼠标或粘贴键盘快捷键的输入中。

在现代浏览器上,您可以使用input事件或change keyup paste mouseup (ya mouseup,也可以处理掉的文本):

$.fn.disallowChars = function(regexp){
  return this.on('input', function(){
      this.value = this.value.replace(regexp, '');          
  });
};

BUT则一旦输入值被替换,文本插入符号将放在字符串输入的结束(或开始取决于浏览器的行为)。

演示

这里有一个方便的例程,我用它来清理当前项目中的一些输入字段:

// 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;

});