2011-03-11 130 views
2

我正在使用jQuery验证与jQuery Mobile的移动应用程序。我一直在努力争取这项工作很长时间,看不出有什么问题。基本上,表单提交时不会触发任何验证。jQuery验证没有验证表单,但没有抛出错误

我已经回溯了一点点,并从示例页面http://jquery.bassistance.de/validate/demo/复制了jquery和validate.js的版本。仍然无法正常工作:(

<script type="text/javascript"> 
    $.validator.setDefaults({ 
     submitHandler: function() { alert("submitted!"); } 
    }); 

    $().ready(function() { 
     // validate the comment form when it is submitted 
     //$("#commentForm").validate(); 

     // validate signup form on keyup and submit 
     $("#signupForm").validate({ 
      rules: { 
       username: { 
        required: true, 
        minlength: 2 
       }, 
       password: { 
        required: true, 
        minlength: 5 
       }, 
       password2: { 
        required: true, 
        minlength: 5, 
        equalTo: "#password" 
       }, 
       email: { 
        required: true, 
        email: true 
       }, 
      }, 
      messages: { 
       username: { 
        required: "Please enter a username", 
        minlength: "Your username must consist of at least 2 characters" 
       }, 
       password: { 
        required: "Please provide a password", 
        minlength: "Your password must be at least 5 characters long" 
       }, 
       password2: { 
        required: "Please provide a password", 
        minlength: "Your password must be at least 5 characters long", 
        equalTo: "Please enter the same password as above" 
       }, 
       email: "Please enter a valid email address" 
      } 
     }); 
     </script> 

窗体被初始化在PHP中:

可能引起问题
 echo "<form id=\"signupForm\" action='".$_SERVER['PHP_SELF']."' method=\"post\">"; 

回答

2

嗯,你的js代码似乎是无效的,这里的有效代码

$.validator.setDefaults({ 
    submitHandler: function() { alert("submitted!"); } 
}); 

$().ready(function() { 
    // validate the comment form when it is submitted 
    //$("#commentForm").validate(); 

    // validate signup form on keyup and submit 
    $("#signupForm").validate({ 
     rules: { 
      username: { 
       required: true, 
       minlength: 2 
      }, 
      password: { 
       required: true, 
       minlength: 5 
      }, 
      password2: { 
       required: true, 
       minlength: 5, 
       equalTo: "#password" 
      }, 
      email: { 
       required: true, 
       email: true 
      } 
     }, 
     messages: { 
      username: { 
       required: "Please enter a username", 
       minlength: "Your username must consist of at least 2 characters" 
      }, 
      password: { 
       required: "Please provide a password", 
       minlength: "Your password must be at least 5 characters long" 
      }, 
      password2: { 
       required: "Please provide a password", 
       minlength: "Your password must be at least 5 characters long", 
       equalTo: "Please enter the same password as above" 
      }, 
      email: "Please enter a valid email address" 
     } 
    });}); 
+0

啊,这么小的一件事!这是没有出现在Firebug :( 这会引起错误消息,但我不能阻止它提交表单,如果必填字段为空。任何想法? – user601606 2011-03-11 10:31:32

+0

提交处理程序部分似乎并不如果我提交表单,警告框不会弹出,但表单仍然提交,因此,即使内容无效,表单也会提交:( – user601606 2011-03-11 11:18:52

+0

排序。似乎jQuery验证工作只有jquery.mobile-1.0a2!感谢您的帮助。 – user601606 2011-03-11 12:03:24

0

一件事,在IE中至少是后最终结尾的逗号“电子邮件”您的规则结构的元素。在结构中的最后一个元素不应该有一个逗号后。

+0

固定按上述克莱德路宝的代码。如果出现错误,仍然有问题停止提交。 – user601606 2011-03-11 11:26:50

0

您在rules-> email区块(最后)添加了“逗号”,这就是为什么您的代码无效。

电子邮件:{要求:真实, 电子邮件:真正},

应该

电子邮件:{要求:真实, 电子邮件:真正}