2012-10-03 63 views
1

尝试在文本框中输入除小写字母以外的任何字符时改变类别。不过,我确信有一些愚蠢的小东西造成这种情况,它没有显示console.log的“哟!”。这是javascript:表单验证正则表达式除去小写字母

$(function(){ 
    $("input[name='name']").keyup(function(){ 
     var str = $(this).val(); 
     var badChars = new RegExp("[^a-z]"); 
     if (str.indexOf(badChars)!=-1){ 
      console.log("yo!"); 
      $(this).removeClass("good"); 
      $(this).addClass("error"); 
     } 
    }); 
}); 

我在搞什么?

+0

是它更好地使用名称或ID? –

+4

str.indexOf使用**字符串**而不是正则表达式。你可能想要**匹配**或**测试**。 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/indexOf –

回答

2
$(function() { 
    // Don't need to create new RegExp object on each keyup event. 
    // Just create it once: 
    var badChars = new RegExp("[^a-z]"); 

    $("input[name='name']").keyup(function() { 
     // Use RegExp.test() method to check 
     // is string matches the regular expression. 
     if (badChars.test(this.value)) { 
      console.log("yo!"); 
      $(this).removeClass("good") 
        .addClass("error"); 
     } 
    }); 
}); 

RegExp.test() method