2010-10-28 147 views
1

那么,我有一个使用jQuery验证表单的问题。我没有使用任何验证框架(例如http://docs.jquery.com/Plugins/Validation),因为我需要在没有任何预先构建的解决方案的情况下执行此操作(顺便提一下,这是用户需求,奇怪)。我有一个文本框,我需要验证任何字符串,但是,该字符串没有数字或特殊字符(如!“$%& /()=;,:.-_),这是一个人名。是我的代码:使用jQuery进行表单验证

<script type="text/javascript"> 
    $(document).ready(function(){ 
     var onlyChars = /^[A-Za-z]+$/; 
     var onlyNums = /^[0-9]+$/; 
     var mail = /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/; 
     var name = $("#txtname"); 
     function validateName() 
     { 
     if (name.val().length > 25) 
     { 
      alert("Too Longer"); 
      return false; 
     } 
     else if (name.val().match(/^[A-Za-z]+$/)) 
     { 
      alert("Error, Pattern Doesn't Match"); 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
     } 
     $("#submitform").submit(function(){ 
     if (validateName()) 
     { 
     return true; 
     } 
     else 
     { 
      return false; 
     } 
     }); 
    }); 
    </script> 

第一确认这是好(如果我写了超过25个字符,警报被触发,并且提交事件中止),但是,第二验证不这样做呢?在这情况发生了两个事件:

  1. 领域,具有不-允许的字符“通行证”的验证和表单提交

  2. 该字段只有允许的字符不通过验证,并且未提交表单。

我检查了一切,而“两个问题”完全是随机的。

你能给我一些帮助吗?

非常感谢!

PS:很抱歉的英语,我不是一个“母语”

+1

可以承认它是作业。 – 2010-10-28 02:41:04

+0

恩,请基督不要在你的代码中混合使用语言? :<全部使用西班牙语或全英文。此外,缩写是邪恶的 – bevacqua 2010-10-28 02:48:14

+0

@mootinator对不起,但不是,这不是作业...:/ – 2010-10-28 03:14:12

回答

0

好吧,我会咬。

仔细查看这段代码:

else if (name.val().match(/^[A-Za-z]+$/)) 
    { 
     alert("Error, Pattern Doesn't Match"); 
     return false; 
    } 

,上面写着:如果名称相匹配的模式告诉它没有用户,并没有提交。你要反的是:

else if (!name.val().match(/^[A-Za-z]+$/)) 
    { 
     alert("Error, Pattern Doesn't Match"); 
     return false; 
    } 
+0

是的,我错过了“!”,但是,“结果是一样的”。我不知道为什么,但是,给了我相同的结果,有时以特殊字符的形式提交,有时会停止执行,但在这种情况下,程序会阻止“良好表达”。例如:我在文本框中输入“Foo Bar”,脚本触发警报“错误,模式不匹配”​​。 – 2010-10-28 03:46:56

+0

var name = $(“#txtname”);应该在validateName函数中。 – 2010-10-28 03:54:45

+0

好吧,它工作!非常感谢! – 2010-10-29 13:50:14

1

您的代码 ==>
如果名称正确匹配,“模式不匹配”​​ 有一个在你的代码在这里:

else if (name.val().match(/^[A-Za-z]+$/)) 
//change this to else if (!(name.val().match(/^[A-Za-z]+$/))) 
    { 
    alert("Error, Pattern Doesn't Match"); 
    return false; 
    } 
    else 
    { 
    return true; 
    } 
0

你应该使用Firebug并设置一个断点走路的代码,它可能会会给你一个提示,为什么你进入的代码错误块。