2009-05-31 133 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. 

希望这有助于。