【问题标题】:jQuery Validate odd error when custom messages are specified指定自定义消息时jQuery验证奇数错误
【发布时间】:2013-09-12 01:29:15
【问题描述】:

我有一个用于创建产品记录的表单,它具有(用户控制的)动态条目(即一个产品可以有 N 个选项(例如不同的颜色,或不同的饰面等,也可能有不同的价格)。用户添加了一个根据需要为每个选项设置一组字段。当然,大多数产品只有一个版本(因此只有一个选项),所以在这种情况下,不需要提供选项名称,只需提供价格。所以选项名称字段是仅当表单上有多个期权价格字段时才有效。

    $('.iprice').each(function() {
      $(this).rules('add', {
        required: true,
        number: true,
    */    messages : { required:'enter price', number:'enter only price' }  */
      });
    });
      $('.iname').each(function() {
        $(this).rules('add', {
          required: function(){
            if ($('[name="attr[2][price]"]').length) {
                return true;
            } else {
                return false;
            }
          },
    /*      messages: function(){
              if ($('[name="attr[2][price]"]').length) {
                return 'option name?';
              }
            }  */
          });
       });

验证工作正常,如上所述。 (见jsfiddle here)。但是,您会注意到验证中有两个注释掉的部分提供自定义消息。如果包含这些,一旦任何一个引用字段中有值,提交按钮将返回错误。

"{"error": "Shell 表单不验证{'html_initial_name': u'initial-js_lib', ..."

据我所知,语法是正确的,方法是正确的。谁能看到我哪里出错了?

(我意识到我可以通过为每个元素创建 data-msg-required="??xx??" 属性来以其他方式解决问题,但这有点不雅和冗长。)

有什么想法吗?

Here is another jsfiddle 显示只有一组选项的表单。 price 字段的自定义消息已启用,但是,如果 name 字段的自定义消息未注释,则验证将在提交时崩溃。

【问题讨论】:

  • 为什么不试试 1.11.1 版本而不是 1.11.0pre?我还认为您需要删除该 .on('submit') 处理程序。如果您已经在插件中内置了submitHandler,则不需要它。
  • @Sparky,你对版本的观察是正确的!通过使用 1.11.1 版本,提交错误已得到解决。第一个实例(使用 iprice 类)也解决了自定义消息的问题。但是对于条件 (.iname) 类,它们只是被忽略了。但是我意识到我可以简单地为“必需”设置一条消息,并且由于 required 是有条件的,该消息也是如此。 [链接]jsfiddle.net/e4effect/PbXJf

标签: jquery forms jquery-validate


【解决方案1】:

将您的插件升级到最新版本。 (1.11.1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多