0

jquery http://bassistance.de/jquery-plugins/jquery-plugin-validation/の検証プラグインを使用してフォーム全体を送信せずに、ボタンのクリックでフォームを検証できますか

このプラグインはフォーム検証でうまく機能しますが、実際には、テキストボックス内に書かれたテキストが電子メールかどうかを確認したいのですが、電子メールの場合は、データベースにあるかどうかを確認する必要があります。データベースは、フォームを送信するようにユーザーに提供します。それ以外の場合は、ボタンを無効にします。私は次のように検証プラグインを使用しています。

$('#child1Email').blur(function(){
    var result=$('#frmAddChild').validate();
    alert(result);
    //if(result)
       //Ajax call to my servlet
    //else
       //Message box showing wrong  email and disabling the submit button
}); 

PS私は、id :: child1Email電子メールとしてテキストフィールドのクラスを保持して、電子メールとして検証されるようにしました

<form name='frmAddChild' id='frmAddChild' action='addChild' method='post'>
     .
     .
     .
     .
     .
     <input type="text" name="child1Email" id="child1Email" class='email'/>
     .
     .
     .
     .
     .
</form>

しかし、結果を警告すると[object Object]が表示されますここに画像の説明を入力

前もって感謝します

4

1 に答える 1

2

新しいコード ブロックでマジックを実行する代わりに、独自の検証ルールを簡単に作成できます。

このようなもの:

<input type="text" 
       name="child1Email" 
       id="child1Email" 
       class="email"
       />

jQuery Validation Plugin を使用すると、カスタム コードを次のように記述できます。

$("form").validate({    
    rules: {      
        child1Email: {        
            required: true,        
            remote: "validate-email.jsp"      
        }    
     },
     messages: {
         child1Email: "Email is correct."   
         },
         submitHandler: function() {
             alert("Correct email!");
         },
         success: function(label) {
             label.addClass("valid").text("Valid email!")
         },
         onkeyup: false
});

このremoteオプションは、次のGET形式でリクエストを送信します。

validate-email.jsp?child1Email=abc%40domain.com 

どこに送り返すtrueか、またはfalse何に反応したいかによって異なります。

さらに、次のように、いつでも自分で検証を呼び出すことができます。

$("form").submit(function() {

    if($("form").valid()) { 
        alert('valid form'); 
        return true; // submit automatically
    }
    else { 
        alert('form is not valid'); 
    }

    return false; // no need to submit automatically
});
于 2012-04-05T10:53:05.833 に答える