2009-05-31 131 views
4

好吧,我已經嘗試了一些東西,但我留在這裏......jQuery驗證errorPlacement和刪除元素?

這裏是我的工作的HTML:

<div class="required"> 
<label for="paysys_idworldpay" class="labelRadio"> 
<input type="radio" value="worldpay" name="paysys_id" id="paysys_idworldpay" class="inputRadio"/> 
<b>WorldPay</b></label> 
<label for="paysys_idoffline" class="labelRadio"> 
<input type="radio" value="offline" name="paysys_id" id="paysys_idoffline" class="inputRadio"/> 
<b>Paypal</b></label></div> 

<div class="required"> 
<label for="email">Email Address</label> 
<input type="text" value="" name="email" class="required email inputText" id="email" /></div> 

,這是我已經得到了代碼這種形式在驗證()函數:

errorElement: 'p', 
errorClass: 'error', 
errorPlacement: function(error, element) { 
    error.insertBefore(element.prev()); 
    element.parent().addClass('error'); 
}, 
success: function(label){ 
    label.removeClass('error'); 
    label.parent().removeClass('error'); 
} 

現在,工作得很好像在上述形式「電子郵件」的字段(它插入段落並給它分配一類=「錯誤」與添加沿着「錯誤」包裝div的類)...但單選按鈕它不會以同樣的方式工作 - 它會增加是周圍標籤的「錯誤」類,它甚至不會插入帶有錯誤類的段落。爲什麼?

我在這裏錯過/做錯了什麼?

此外,我如何實際刪除「成功」部分中添加的段落?因爲它是現在,它只是會從它的類屬性中刪除了「錯誤」,並與輸入到輸入字段中的每一個字母它增加了一個空段落是這樣的:

<p generated="true" class=""/> 

所以我結束了一堆每個字段中每個字段的字符數(取決於輸入的字符數)...再次,我錯過了什麼?

回答

0

您是否嘗試過使用FireBug進行調試?當你使用它時,使用DOM檢查器來確保樹結構符合你的期望。

+0

是的,沒有運氣找出有什麼問題... 另外,不知道如何在jQuery中寫這些成功條件(用於刪除段落,處理DOM等)。 – 2009-05-31 02:29:31

3

如果您發佈完整的驗證功能以及它如何連接到您的表單,它將會有所幫助。

不過,我認爲有兩件事情可以指出:

你的單選按鈕包裹它們的標籤內,當電子郵件輸入旁邊的標籤。您的代碼規定:

error.insertBefore(element.prev()); 

,這意味着它會插入<輸入>元素的前面的鄰居錯誤之前DIV。您的單選按鈕沒有前面的鄰居,它在標籤元素內是獨一無二的。你應該將代碼更改爲:

error.prependTo(element.parents("div.required")).addClass("errorMsg"); 

其次,除去<P>標籤的東西的時候驗證成功,你需要調用remove()函數:

error.remove(); // assuming "error" is the &lt;P&gt; tag. 

希望這有助於。