【问题标题】:Jquery Validation Plugin - Validate Fields Being AddedJquery 验证插件 - 验证正在添加的字段
【发布时间】:2014-04-29 01:54:06
【问题描述】:

我需要有关 jQuery 验证的帮助。基本上,当我尝试提交表单时,我有几个静态字段并且验证工作正常。但是,我有一个动态添加/删除字段,我不知道谁来捕获 elementID 并对其进行验证。让我解释一下这个问题。

我有 3 个静态字段成本、类型和区域。并且以下验证在这些字段中正常工作。

$("#form1").validate({
    rules: {
        Cost: {
            currency: true
        },

        Type: {
            required: true  
        },

        Region: {
            required: true  
        }

    }
});

现在,我有一个按钮可以为文本框添加(也有逐行删除选项),这个添加功能也可以正常工作。

<input type="button" name="AddIssue" id="AddIssue" value="Add Issue"  class="button2"/>

当点击 AddIssue 按钮时,将添加以下文本框,并且每个正在添加的文本框的 elementID 不断增加,如下例所示。

<input type="text"  id="Issue_1" name="Issue_1" size="5" value="" />
<input type="text"  id="Issue_2" name="Issue_2" size="5" value="" />
<input type="text"  id="Issue_3" name="Issue_3" size="5" value="" />
<input type="text"  id="Issue_4" name="Issue_4" size="5" value="" />

我想在 jQuery 验证中包含任何元素 ID,如“Issue_”,并检查该值是否为空。我该怎么做?

请帮忙。谢谢!

【问题讨论】:

    标签: jquery jquery-validate


    【解决方案1】:

    required 类添加到新元素中:

    <input type="text" id="Issue_1" name="Issue_1" size="5" value="" class="required" />
    

    jquery-validate` 自动识别符合其验证规则的类名并应用它们。

    【讨论】:

    • 那肯定比使用jQuery.validator.addClassRules() 更好,你能在文档中链接到它吗?我没有看到提到。
    • 我不知道这是在当前文档中的什么地方说明的——自从几年前我学会了如何使用该插件以来,它已经完全重新排列了。当时很多例子都用到了类。
    • 感谢@Barmar,您的解决方案既简单又有效,但我忘了提到我想要求用户添加至少一个文本框(Issue_1)。有什么建议吗?
    • 我认为验证插件本身无法做到这一点。它只能验证字段的内容,但它们必须首先存在。您可以编写字段添加/删除代码以不允许删除最后一个字段。
    • 再次感谢@Barmar。
    【解决方案2】:

    假设它是JQuery Validate Plugin,我认为下面将是处理它的最佳方式,它允许动态生成输入,如果您希望应用自定义消息和/或附加选项使用的规则。

    如果您只是希望它是必需的,class="required" 将按照其他答案中列出的方式执行此操作。

    PER THE DOCS

    示例:添加一个名为“name”的新复合规则,替换 class=”required” minlength=”2″ with class=”name”。

    当前代码

    $("#form1").validate({
        rules: {
            Cost: {
                currency: true
            },
    
            Type: {
                required: true  
            },
    
            Region: {
                required: true  
            }
    
        }
    });
    

    添加代码

    jQuery.validator.addClassRules("issue", {
      required: true,
      minlength: 2
    });
    

    有了这个,我们可以在所有客户字段中添加一个类客户并完成它:

    因此,您的输入将需要像这样应用一个类。

    <input type="text"  id="Issue_1" name="Issue_1" size="5" value="" class="issue"/>
    <input type="text"  id="Issue_2" name="Issue_2" size="5" value="" class="issue"/>
    <input type="text"  id="Issue_3" name="Issue_3" size="5" value="" class="issue"/>
    <input type="text"  id="Issue_4" name="Issue_4" size="5" value="" class="issue"/>
    

    然后您可以在该类中添加您想要的任何输入,它将根据“问题”ClassRules 进行验证。

    JSFIDDLE

    【讨论】:

    • 感谢@Matt 的帮助
    • 有没有办法在验证时循环遍历所有 elementID 并捕获以“Issue_”开头的任何 ID。如果没有找到,则提示用户是否需要添加至少一个?
    • 我刚离开我的电脑,但我认为您无法验证输入是否存在。可能有一种方法可以通过 API 添加回调函数或其他东西。我会检查何时回家并更新。
    猜你喜欢
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    相关资源
    最近更新 更多