jQuery keyup()非法字符

时间:2010-05-19 13:55:04

标签: jquery key

我有一个字段,并希望在键入时显示用户时防止某些非法字符。 我如何在以下示例中执行此操作?

  $('input').bind("change keyup", function() {
   var val = $(this).attr("value");
   /*
   if (val --contains-- '"') {
    $(this).css("background", "red");
           val = val.replace('"', "");
              $(this).attr("value", val)
   }
   */
   $("p").html(val);
  });

编辑:我应该把非法字符放在一个数组

var vowels = new Array('"', "<", ">", "&");

3 个答案:

答案 0 :(得分:5)

尝试使用正则表达式。

$('input').bind("change keyup", function() {
 var val = $(this).val();
 var regex = /["<>&]/g;
 if (val.match(regex)) {
   $(this).css("background", "red");
   val = val.replace(regex, "");
   $(this).val(val);
 }
 $("p").html(val);
});

和FYI:您可以将.attr("value",val)替换为.val(val),将.attr("value")替换为.val()

<强>更新

如果要排除更多字符,可以将它们放入正则表达式中。如果要排除用于控制正则表达式的字符,则需要使用\个字符来转义它们以控制正则表达式:[]()/\+{}?*+.^$

答案 1 :(得分:1)

试一试。但是没有数组。

    $('input').bind("change keyup", function() {
        var $th = $(this);
        $th.val( $th.val().replace(/["<>&]/g, function(str) {  return ''; } ) );
    }); 

答案 2 :(得分:0)

您可以使用indexOf来确定字符串是否包含某个char ...

元音=数组('“',”&lt;“,”&gt;“,”&amp;“);

$('input').bind("change keyup", function()
{
   var val = $(this).attr("value");
   var illegal = '';       
   $(vowels).each(function()
   {
      if(val.indexOf(this)!=-1)
      {
          illegal= this;
          break;
      }
   });
   if(illegal != '') 
   {
       $(this).css("background", "red");
       val = val.replace(illegal, "");
       $(this).attr("value", val)
   }
});