如何使用jQuery防止将特殊字符粘贴到输入字段?

时间:2016-02-12 09:19:25

标签: javascript jquery user-input

我想阻止用户使用特殊字符,我已经可以阻止用户输入这些字符了,但我也试图阻止特殊字符的粘贴。 FIDDLE

请注意:我允许使用西里尔语,拉丁语和土耳其语字符。

JS:

$('input').bind('input', function() {
  var c = this.selectionStart,
   r = /[^a-zA-Za-åa-ö-w-я 0-9/@!"#¤?¨'_.,]/,gi
   v = $(this).val();
 if(r.test(v)) {
 $(this).val(v.replace(r, ""));
  c--;
  }
 this.setSelectionRange(c, c);
});

2 个答案:

答案 0 :(得分:0)

$(document).ready(function(){

   $('.inputClass')..keypress(function (e) {
      //Change Regex according to Your need to allow
      var regex = new RegExp("^[a-zA-Z]+$");
      var key = String.fromCharCode(!e.charCode ? e.which:e.charCode);
      if (!regex.test(key)){
          e.preventDefault();
          return false;
      }
   });
   $('.inputClass').bind("keyup paste",function(e){
       var txtValue = $(this).val();
       //Change your Regex according to your need to block while pasting
       if (/^[a-zA-Z]+$/.test(txtValue) == false){
           e.preventDefault();    
       }
   });
 });

答案 1 :(得分:-1)

试试这段代码。请参阅演示 JsFiddle

的链接
$(document).ready(function()
{
  $('input').on("keyup paste",function(e) 
  {
    var txtValue = $(this).val();

    if (/^[a-zA-Z0-9- ]*$/.test(txtValue) == false) 
    {
       $(this).val('');    
    }
  });
});

$('input').bind('keypress', function (event)
{
   var regex = new RegExp("^[a-zA-Z0-9]+$");
   var key = String.fromCharCode(!event.charCode ? event.which:event.charCode);
if (!regex.test(key)) 
{
   event.preventDefault();
   return false;
}
});