2011-03-25 59 views
7

感覺這個問題之前已經被問過,但沒有問題似乎解決了我的問題,所以提前道歉。jQuery驗證單個元素上的errorPlacement

因爲我使用ASP.NET和無法預測我想驗證控件的名字,我建立我的JQuery驗證規則,像這樣:

jQuery('textarea[id$=MessageTextInput]').rules("add", { required: true, messages: { required: "required"} }); 
jQuery('input[id$=LinkTextInput]').rules("add", { required: true, messages: { required: "required"} }); 
jQuery('input[name$=PositionChoiceInput]').rules("add", { required: true, messages: { required: "required"} }); 

不是:

$('#aspnetForm')。validate({options and rules}); //需要控制名稱

問題是,第三個規則是radiobuttonlist,並且錯誤消息沒有放在正確的位置。它被放置在第一個單選按鈕之後,而我希望它在最後一個單選按鈕列表之後。

jQuery('textarea[id$=MessageTextInput]').rules("add", { required: true, messages: { required: "required"} }); 
jQuery('input[id$=LinkTextInput]').rules("add", { required: true, messages: { required: "required"} }); 
jQuery('input[name$=PositionChoiceInput]').rules("add", { required: true, messages: { required: "required"} }); 

但是,當我添加errorPlacement選項時,似乎無法使用該方法。我也嘗試了以下內容:

jQuery('#aspnetForm').validate({ errorPlacement: function (error, element) { 
      if (element.hasClass('sfRadioList')) { 
       error.insertAfter(element.parent("ul")); 
      } 
     } 
     }); 
jQuery('textarea[id$=MessageTextInput]').rules("add", { required: true, messages: { required: "required"} }); 
jQuery('input[id$=LinkTextInput]').rules("add", { required: true, messages: { required: "required"} }); 
jQuery('input[name$=PositionChoiceInput]').rules("add", { required: true, messages: { required: "required"} }); 

但這仍然沒有奏效。我能做些什麼來設置一個元素的位置?

在此先感謝 higgsy

回答

16

下面是一些代碼爲我工作...

errorPlacement: function(error, element) { 
if (element.attr("name") == "pdfEmailAddress") 
    { 
     error.insertAfter("ul.slinks"); 
    } 
    else 
    { 
     error.insertAfter(element); 
    } 
} 
+0

對我來說!感謝您的回答。 – higgsy 2011-06-22 15:57:13