【问题标题】:jQuery validate Uncaught TypeError Cannot read property 'form' of undefinedjQuery validate Uncaught TypeError Cannot read property 'form' of undefined
【发布时间】:2016-02-18 05:46:16
【问题描述】:

我正在使用 jquery 验证http://jqueryvalidation.org/

我有一个手动添加第一个字段的表单(硬编码)

然后以编程方式添加更多字段。 ARE 已经附加在表单标签中,进入 div #to-append

手动添加的验证没问题。

对于其余部分,我尝试添加这样的规则,每次添加字段时:

var $largestID = $("#to-append > div:last > div:first > input:first").attr("id");
console.log($largestID); //throws right id

$($largestID).rules("add", {
        required: true,
        minlength: 3,
        pattern: yt

});

但得到上述“Uncaught TypeError Cannot read property 'form' of undefined”错误。

任何帮助将不胜感激。

【问题讨论】:

  • 规则应该添加到DOM元素或标签中。您正在添加到 ID。
  • 这段js代码在你的脚本中是什么位置,表单之前还是表单之后?
  • @Sravan 我用名字试过还是不行
  • @PHPExpert 我将它包含在

标签: javascript jquery validation


【解决方案1】:

您正在添加采用 ID 字符串的规则。取而代之的是元素选择器,并将规则添加到该选择器。

var $largestID = $("#to-append > div:last > div:first > input:first").attr("id");
console.log($largestID); //throws right id

$('#'+$largestID).each(function () {
    $(this).rules('add', {
       required: true,
       minlength: 3,
       pattern: yt
    });
});

使用$('#'+$largestID)获取该ID的字段,然后添加规则。

要将规则添加到数组,请使用:

 $('#'+$largestID).each(function () { })

您甚至可以验证该元素的名称数组:

 $('#'+$largestID).validate({
    rules: {
      'url[]': {
        required: true,
      }
    }
});

【讨论】:

  • 谢谢,错误已经消失,但它仍然忽略了规则。我想我必须将它们添加到 Sravan 所说的名称中。如果名称是数组(name="url[]"),我将如何处理。
  • 嗨,我更新了我的答案并为您的数组添加了一个循环。请检查
  • 我将它们一一添加,我不需要遍历数组,问题是像 url[] 这样的名称是否会导致任何问题。无论如何,Bramar 提出的与名称或 ID 无关的建议也不起作用。也不会添加 required="required" 或 required="true"。
【解决方案2】:

无需使用 ID。您有一个返回元素的选择器,直接向其中添加规则。

$("#to-append > div:last > div:first > input:first").rules("add", {
    required: true,
    minlength: 3,
    pattern: yt

});

【讨论】:

  • 似乎没有任何效果,这是合乎逻辑的,应该,但即使我没有得到 jquery 错误,表单也不会提交。我也没有收到任何验证消息,它只是不包含。也许我在其他地方有错误
  • 我一开始在我的验证函数中忽略了:[] 认为是忽略括号,它不是。现在我删除了该行,验证工作,消息显示,但无论错误如何,表单都会被提交。谢谢
猜你喜欢
  • 2017-04-24
  • 1970-01-01
  • 2013-01-15
  • 2019-02-12
  • 2021-09-20
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多