jQuery验证errorPlacement和删除元素?

时间:2009-05-31 01:18:21

标签: jquery jquery-plugins validation jquery-validate

好的,我尝试了一些事情,但我被困在这里......

以下是我正在使用的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>

这是我在这个表单的validate()函数中得到的代码:

    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=""/>

所以我最终会在每个字段中为每个字段添加一些(取决于输入的字符数)...再次,我缺少什么?

2 个答案:

答案 0 :(得分:3)

如果您发布了完整的验证功能以及它如何连接到您的表单,这将有所帮助。

尽管如此,我认为可以指出一些事情:

您的单选按钮被包裹在其标签内,而您的电子邮件输入则位于其标签旁边。您的代码指定:

 error.insertBefore(element.prev());

这意味着它将在&lt; input&gt;之前插入错误DIV。元素的前一个邻居。您的单选按钮没有前面的邻居,它在label元素中是唯一的。您应该将代码更改为:

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

其次,删除&lt; P&gt;标记成功验证时,需要调用remove()函数:

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

希望这有帮助。

答案 1 :(得分:0)

您是否尝试使用FireBug进行调试?在使用它时,使用DOM检查器确保树结构符合您的期望。