javascript验证码无效

时间:2012-11-16 14:36:41

标签: javascript html validation

这似乎是重复的问题,但请看看并尝试回答。 我的javascript验证功能不起作用。 Javascript代码如下:

<script type="text/javascript">

var ck_name = /^[A-Za-z ]{3,20}$/;
   var ck_email = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}
  (?:\.  [a-z]{2})?)$/i 

var ck_mobile = /^[0-9]{10}$/;
var ck_address =  /^[A-Za-z0-9-,]{40,100}$/;


function validate(myform){
var name = myform.fullname.value;
var email = myform.email.value;
var mobile = myform.mobile.value;
var address = myform.address.value;



 var errors = [];

if (!ck_name.test(name)) {
  errors[errors.length] = "Enter valid Name .";
  }

  if (!ck_email.test(email)) {
   errors[errors.length] = "You must enter a valid email address.";
  }
 if (!ck_username.test(mobile)) {
  errors[errors.length] = "Enter valid 10 digit mobile number .";
  }

 if (!ck_password.test(address)) {
  errors[errors.length] = "You must enter a valid address min 40 char.";
  }



 if (errors.length > 0) {
  reportErrors(errors);
  return false;
  }

  return true;
 }

 function reportErrors(errors){
 var msg = "Please Enter Valid Data...\n";
 for (var i = 0; i<errors.length; i++) {
  var numError = i + 1;
  msg += "\n" + numError + ". " + errors[i];
  }
  alert(msg);
 }
  </script>

我有两个按钮1)提交和2)取消 我想当我点击提交按钮,验证功能将调用,当我点击取消它回到页面。

HTML表单

<form action="addorder.php" method="post" enctype="multipart/form-data" name="myform"  >

                    <!-- Form -->
                    <div class="form">
                        <?php   
                       if(isset($_SESSION['msg']))
                       {
                       ?> 
                        <div class="msg msg-ok"><strong><?php echo $_SESSION['msg'];?></strong></div>
                    <?php } ?>      
 <label>Full name<span>(Required Field)</span></label>
   <input type="text" name="fullname"class="field size1"/>
   </p>
              <p>

                                <label>Email<span>     (Required Field)</span>
                                <input type="text" class="field size1" name="email"/> 
                                </label>
              </p>  

               <p>

                                <label>Mobile<span>(Required Field)</span>
                                <input type="text" class="field size1" name="mobile"/> 
                                </label>
              </p>

                        <p>

                                <label>Address<span>(Required Field)</span>
                                <textarea  class="field size1" name="address" rows="3" cols="10"> </textarea>
                                </label>
              </p>

                  </div>
            <!-- End Form -->

                    <!-- Form Buttons -->
                    <div class="buttons" >
                      <input type="submit" name="submit" class="button"  value="Submit" onclick="return validate(myform)" />
                      <input type="submit" name="cancel" class="button" value="Cancel" />
                    </div>
                    <!-- End Form Buttons -->
                </form>

1 个答案:

答案 0 :(得分:0)

我在jsfiddle中尝试了你的代码,并没有调用validate。删除大部分javascript并只留下一个基本的validate确实调用了validate。所以我认为你的javascript有语法错误,表单在提交之前忽略它。所以:

  1. 将取消按钮更改为type=button,以便在您取消提交时不会默认提交表单。
  2. 打开firebug,或者至少是javascript控制台(在某些浏览器中称为'错误控制台')并查看你得到的错误。
  3. 学习如何调试javascript将有助于此次和未来。如果存在语法错误,浏览器可以完全放弃Javascript,在这种情况下,您的表单只会提交,就好像根本没有javascript一样。

    不要将此视为仅通过javascript提交的建议,因为这会阻止javascript关闭的用户无法使用您的表单。但是提交的取消按钮必须去。