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)送信ボタンをクリックするとキャンセルが必要な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 を削除し、基本的なものだけを残して、validatevalidate を呼び出しました。したがって、JavaScript に構文エラーがあり、フォームが送信前にそれを無視していると思います。そう:

  1. キャンセル ボタンを に変更してtype=button、送信をキャンセルするときにデフォルトでフォームを送信しないようにします。
  2. firebug、または少なくとも JavaScript コンソール (一部のブラウザーでは「エラー コンソール」と呼ばれる) を開き、表示されるエラーを確認します。

JavaScript のデバッグ方法を学ぶことは、今回および将来に役立ちます。構文エラーがある場合、JavaScript はブラウザーによって完全に破棄される可能性があります。その場合、フォームは JavaScript がまったくないかのように送信されます。

ただし、これを javascript 経由でのみ送信することを提案するものと見なさないでください。そうすると、javascript がオフになっているユーザーがフォームを使用できなくなる可能性があります。しかし、その送信するキャンセルボタンは行かなければなりません。

于 2012-11-16T14:51:13.807 に答える