2012-02-27 31 views
0

我正在使用jquery驗證插件創建一個彈出jquery ajax評論表單。目前,ajax在html表單字段下返回「this field is required」。我怎樣才能讓jquery將這個響應作爲模糊/焦點事件返回到表單域中?返回表單字段內的jquery驗證響應

這裏是控制事件的JS:

<script> 
    $(document).ready(function() { 
     $('#commentForm').validate({ 
      submitHandler: function(form) { 
       $.ajax({ 
        type: 'POST', 
        url: 'process.php', 
        data: $(this).serialize(), 
        success: function(returnedData) { 
         $('#commentForm').append(returnedData); 
        } 
       });   
       return false; 
      } 
     }); 
    }); 
    </script> 

HTML表單配置,如:

<form class="cmxform" id="commentForm" method="POST" action=""> 
    <p> 
    <label for="cname">Name</label> 
    <input id="cname" type="text" name="name" size="60" class="required" minlength="2" /> 
    </p> 
    <p> 
    <label for="cemail">E-Mail</label> 
    <input id="cemail" type="text" name="email" size="60" class="required email" /> 
    </p> 
    <p> 
    <label for="curl">URL</label> 
    <input id="curl" type="text" name="url" size="60" class="url" value="" /> 
    </p> 
    <p> 
    <label for="ccomment">Your comment</label> 
    <textarea id="ccomment" type="text" name="comment" cols="72" rows="8" class="required"></textarea> 
    </p> 
    <p> 
    <div id="button2"><input class="submit" id="submit_btn" type="submit" value="Send Email"/></div> 
    </p> 
</form> 

謝謝。

+0

你會複製'returnedData'內容嗎?正如我記得,驗證插件有一個選項逐一驗證輸入。 – 2012-02-27 15:39:41

+0

[Here](http://docs.jquery.com/Plugins/Validation/Validator/element#element)演示瞭如何設置元素的驗證。對於每個元素,您需要 '$('#cname')。change(function(){$(「#cmxform」)。validate()。element(「#cname」);});' Can你從'returnedData'中檢索到無效的元素? – 2012-02-27 15:50:55

+0

returnedData只是讀取「該字段是必需的」。除非表單驗證,否則它會引用process.php。謝謝 – 2012-02-27 15:52:05

回答

0

爲了解決這個問題,我用jQuery中的errorPlacement和淡出功能的組合。這是工作的解決方案:

$('#commentForm').validate({ 
    submitHandler: function(form) { 
     $.ajax({ 
      type: 'POST', 
      url: 'process.php', 
      data: $(this).serialize(), 
      success: function(returnedData) { 
       $('#commentForm').append(returnedData); 
      } 

     }); 
     return false; 
    }, 
    errorPlacement: function(error, element) { 
     error.insertAfter(element).position({ 
      my: 'right top', 
      at: 'right top', 
      of: element 
     }); 
     error.fadeOut(3000); 
    }, 
}); 
-1

剛:

$('#commentForm #cname').val("This is required field"); 

您也可以使用JSON。在這種情況下,將是:

success:function(resp){ 
if(resp["code"]=="err"){ 
    $('#commentForm #cname').val(resp["txt"]); 
    //of course you need to use a loop to check all fields 
} 
}