好的,我尝试了一些事情,但我被困在这里......
以下是我正在使用的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=""/>
所以我最终会在每个字段中为每个字段添加一些(取决于输入的字符数)...再次,我缺少什么?
答案 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 <P> tag.
希望这有帮助。
答案 1 :(得分:0)
您是否尝试使用FireBug进行调试?在使用它时,使用DOM检查器确保树结构符合您的期望。