0

这似乎是重复的问题,但请看一下并尝试回答。我的 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>
4

1 回答 1

0

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

  1. 将取消按钮更改为type=button,以便在您要取消提交时它不会默认提交表单。
  2. 打开 firebug,或者至少打开 javascript 控制台(在某些浏览器中称为“错误控制台”)并查看您得到的错误。

学习如何调试 javascript 这一次和将来都会有所帮助。如果存在语法错误,浏览器可以完全丢弃 Javascript,在这种情况下,您的表单将像根本没有 javascript 一样提交。

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

于 2012-11-16T14:51:13.807 回答