2013-01-16 61 views
0

我们“这个字段是必须的”不剪,因为消息失去了上下文的规则,我们所有的验证消息的必须是一个总结,因此默认一个总结,因此需要具体的现场指标。带有自定义JQuery验证错误信息功能援助

我有一个我非常喜欢的解决方案,但很快就清楚地知道,除了必需的字段(电子邮件,url,自定义方法,如phoneUS等)之外,还需要一些消息,所以我做了一些补充到我的功能。

我一直在使用jQuery了一段时间,但我不是在优化方面的专家,所以我希望得到一些专家的帮助是否了以下功能可以优化...我的问题是,“实际上是否有更好的方式来处理摘要中的自定义错误消息?“

$('.required, .email').each(function(index) { 
    var $this = $(this); 

    var label = (
    $this.is(':radio') 
    ? $("label[data-name='"+$this.attr('name')+"']") 
    : label = $("label[for='"+$this.attr('id')+"']") 
); 

    var customMessages = [{}]; 

    if($this.hasClass('required')){ 
    customMessages.required = "'" + label.text() + "' is required."; 
    } 

    if($this.hasClass('email')){ 
    customMessages.email = "'" + label.text() + "' has an invalid email address."; 
    } 

    $this.rules("add", { 
    messages: customMessages 
    }); 
}); 

这里是的jsfiddle: http://jsfiddle.net/GD5nw/1/

+1

如果此代码的工作,和你想知道如何使它更好,那么http://codereview.stackexchange.com是一个更好的SE网站这个问题。 –

+0

我道歉,我不知道存在... – tjans

回答

1

那么为什么不直接分配一个字段,通过字段的基础上每个字段的自定义消息如最典型的是做了什么?它看起来不像你所做的那样冗长。

http://docs.jquery.com/Plugins/Validation/validate#toptions

用于与name属性input元件指定为firstsecond,和实施例address

$('#myform').validate({ 
    rules: { 
     first: { 
      required: true 
     }, 
     second: { 
      required: true 
     }, 
     address: { 
      required: true, 
      digits: true // just an example 
     } 
    }, 
    messages: { 
     first: { 
      required: "your first name is required" 
     }, 
     second: { 
      required: "your last name is required" 
     }, 
     address: { 
      required: "your address is required", 
      digits: "must only use digits on address" 
     } 
    } 
}); 

Working Demo: http://jsfiddle.net/x4YBw/

+0

我想我是在为一个更具全球性的方式,而不是一遍又一遍地重复自己。我的方式导致更少的代码。我通常远离构造函数中的显式jquery验证设置,因为我更喜欢内联代码(class =“required phoneUS”)。至少,这就是我最初开始使用jqValidate的方式。按照您提供的方式进行这种更常见的做法?我一直以为是清洁用更少的脚本代码来做到这一点,但我要改变我的风格肯定是开放的。 – tjans

+0

@tjans:_“更干净” _只取决于你想做什么。你的问题没有提到有多少种形式或领域......你只是提供了一个形式和两个输入的例子(只有两个输入的方式太多)。矿井对于这种情况绝对是更清洁的。至于_“通用实践”_...我已经看到了很多方式的自定义消息,但您的方法对我来说是第一位的。也许这真的是这种特殊用法的最佳方式,但这不是我决定的。 – Sparky