0

我们有一条规则,我们所有的验证消息都必须包含在摘要中,因此默认的“此字段是必需的”不会删除它,因为消息在摘要中丢失了它们的上下文,因此需要特定的字段指示符。

我有一个我非常喜欢的解决方案,但很快就发现除了必填字段(电子邮件、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/

4

1 回答 1

1

那么,为什么不像最通常的做法那样,为每个字段逐个字段地分配自定义消息呢?它似乎没有你一直在做的那么冗长。

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

具有指定为、和input的属性的元素示例。namefirstsecondaddress

$('#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"
        }
    }
});

工作演示:http://jsfiddle.net/x4YBw/

于 2013-01-16T16:46:21.627 回答