2009-08-07 75 views
1

在此函数中,当字段未验证时,我在下一个表td中显示错误图像。它正确地显示错误图像,但是当字段被删除时,错误图像不会从下一个td中删除。我试图使用“成功”选项,但它不起作用。任何人都可以告诉我确切的代码。jQuery验证插件:当字段验证时如何调用函数

$(obj).find("form").validate({ 

    showErrors: function(errorMap, errorList) { 
     for (key in errorMap) { 
       $('#' + key).parent().next().html("<img id='exclamation' src='images/exclamation.gif' />"); 
     } 
    } 

}); 

回答

0

时候,我得到了我的答案后。事实上,我想在输入字段的下一列(td)中显示带有标注(包含错误)的图像,但未通过验证插件进行验证。当一个输入字段被验证时,这个错误图像应该被删除,并在其上标注。

这是我的解决方案。

$("form").validate({ 

    errorPlacement: function(error, element) { 

     //There should be an error 
     if(error.html() != ''){   

      element.parent().next().html("<img id='exclamation' src='images/exclamation.gif' />").callout({ 
       width  : 200, 
       cornerRadius : 8, 
       className : "validationCallout", 
       content  : error, 
       align  : "left", 
       nudgeHorizontal : -14, 
       nudgeVertical : 4, 
       arrowHeight : 6 
      });  
     } 
    }, 

    success: function(label) { 
     $(obj).find(".valid").parent().next().html("");   //remove error image from next column(td) of input containing "valid" class 
     $(obj).find(".valid").parent().next().closeCallout(); //remove callout on error image from next column(td) of input containing "valid" class 
    } 

}); 

此代码可能很复杂,但它现在对我来说很有用。这里使用了一个标注插件,它与问题无关,但可以帮助解决问题。 任何人都可以使它更简单吗?

+0

您可能需要切换 $(obj).find(“。valid”)。parent()。next()。html(“”); $(OBJ).find( “有效”。)父()的next()closeCallout()。; ()“。”)。parent()。next().html(“”).closeCallout(); – 2009-08-11 13:19:01

+0

谢谢。这很好。 – NAVEED 2009-08-12 07:23:41

1

创建一个删除所有错误图像的函数。在成功和showErrors方法的开头调用它。

+0

成功:function(){alert('Success'); } //即使这个警报没有显示在我的上面的函数中。 – NAVEED 2009-08-07 13:01:17

+0

即使单个验证失败,也不会调用成功。所有字段验证是否正常? – kgiannakakis 2009-08-07 14:14:59

+0

单个字段也被验证时调用成功。最后我得到了我的答案。请看下面。 – NAVEED 2009-08-11 06:11:56

2

你可能想看看errorPlacement选项。

看到Remember the milk demo

从那里:

errorPlacement: function(error, element) { 
    if (element.is(":radio")) 
     error.appendTo(element.parent().next().next()); 
    else if (element.is(":checkbox")) 
     error.appendTo (element.next()); 
    else 
     error.appendTo(element.parent().next()); 
} 

定制,以便放置在正确的地方您的错误信息(相邻TD)

+0

我必须使用我自己的错误消息(带有标注插件的图像)。因此,我使用showErrors选项在foor循环中使用任何东西。 你能告诉我如何使用errorPlacement选项显示我自己的错误消息/图像。 – NAVEED 2009-08-07 12:41:17

+0

我相信你可以,而不是error.appendTo,做一些像getMySpecialMarkupFrom(error).appendTo(wherever) – 2009-08-10 09:35:37

+0

是的,它帮助了我。谢谢。请参阅下面的答案。 – NAVEED 2009-08-11 06:13:06