1

検証は、フォームと検証プラグインを静的フォームとして使用すると正常に機能します。フォームをページに挿入してから検証する必要があります-うまくいきません。

  $(document).ready(function(){
   var validator = $("#loginForm").validate({
       // rules for field names
       rules: {
            cname: "required", 
            cpass: "required"
    },
    // inline error messages for fields above
    messages: {

            cname: "required", 
            cpass: "required"
    }
}); // for validating the form

$("#loginForm").validate({
  submitHandler: function(form) { //Only runs when valid
      form.submit();
  }
});   

  var htmlStr = '<form class="cmxform" id="loginForm" method="get" action="https://www.myURL.com/login.php"><p><label for="cname">Name</label><em>*</em><input id="cname" name="name" size="25" class="required" minlength="2" /></p><p><label for="cpass">Password</label><em>*</em><input type="password" id="cpass" name="pass" size="25" class="required" minlength="2" /></p><input id="mySubmit" class="submit" type="submit" value="Submit"/></form>';

  function createForm(){
  // fires with body onload
  $("#login-container").html(htmlStr);
     };
4

4 に答える 4

0

ページにhtmlを追加した直後に、検証コードを移動します。関数に$("#loginForm")存在しない可能性が高いため、その領域には何も実行されません。あなたはおそらくあなたのコードをこのように見せたいでしょう:document.readyvalidate

function createForm(){
  // fires with body onload
  $("#login-container").html(htmlStr);

  var validator = $("#loginForm").validate({
     // rules for field names
     rules: {
            cname: "required", 
            cpass: "required"
    },
    // inline error messages for fields above
    messages: {
            cname: "required", 
            cpass: "required"
    }
  });  
}

あなたが持っていた他の問題-フォームを手動で送信する必要はありませんsubmitHandler-フォームが有効である場合、バリデーターはあなたのためにそれを行います。また、メッセージオブジェクトを設定した方法では、実際のエラーメッセージは「必須」という単語になります。それがあなたが望むものかどうかわからない...

于 2012-07-11T22:42:31.297 に答える
0

私が見つけたのは、この方法でルールを追加してもうまくいかないということです。おそらく、挿入された HTML でルールが概説されているのに対し、後で var validator = (ルール) を使用してルールを追加するためです。挿入された HTML の一部である場合、これらのインライン ルールが機能する唯一の方法は、ルールを追加するかのように関数を追加することですが、何も追加されません。以下のコード。フォームは動的に生成され、動的に挿入され、ルールも同様に動的でなければなりません。私が取っているこのアプローチは正しいですか、それともたまたまうまくいくのでしょうか?

  var htmlStr = '<form class="cmxform" id="loginForm" method="post" action="https://www.myURL.com/login.php"><p><label for="cname">Name</label><em>*</em><input id="cname" name="name" size="25" class="required" minlength="5" /></p><p><label for="cpass">Password</label><em>*</em><input type="password" id="cpass" name="pass" size="25" class="required" minlength="8" /></p><input id="mySubmit" class="submit" type="submit" value="Submit"/></form>';

  function createForm(){
   $("#login-container").html(htmlStr);
   var validator = $("#loginForm").validate({
     });  
  };
于 2012-07-19T21:05:22.903 に答える
0
var htmlStr = '<form class="cmxform" id="loginForm" method="post" action="https://www.myURL.com/login.php"><p><label for="cname">Name</label><em>*</em><input id="cname" name="name" size="25" class="required" minlength="5" /></p><p><label for="cpass">Password</label><em>*</em><input type="password" id="cpass" name="pass" size="25" class="required" minlength="8" /></p><input id="mySubmit" class="submit" type="submit" value="Submit"/></form>';


function createForm(){
     $("#login-container").html(htmlStr);
     var validator = $("#loginForm").validate({
       });  
 };

 <body onload="createForm()">

<div id="login-container">&nbsp;</div>
于 2012-07-12T00:53:20.227 に答える
0

delegate動的要素で動作させるには、jqueryの関数を使用する必要があります:)

于 2012-07-11T21:39:02.817 に答える