【问题标题】:jQuery validation plugin and dynamic inputsjQuery 验证插件和动态输入
【发布时间】:2013-06-13 13:23:56
【问题描述】:

我有一个动态生成和递增它的 id 的表单部分。 比如:

<input type='text' name='fname1' id='fname1'/>
<input type='text' name='lname1' id='lname1'/>

我正在尝试第一次通过并验证表单(我以前从未使用过 jQuery 验证插件),我从表单 id“确认”开始它

$('#confirm').validate({
     rules:{
          oneoftheinputnameshere:{
             required: true
             }
            }
 });

当我验证不更改的输入字段时,上述内容很好,但是当我不知道会生成多少次时,我将如何选择要验证的内容?我查看了其他一些关于此的问题,并为每个必需的输入字段添加了一个类,但我不确定这是否正确或如何实现它。

任何帮助都会很棒

编辑:id 会加一,所以 'fname2'、'fname3' 等

【问题讨论】:

  • 看看这篇文章,它应该对你有帮助:stackoverflow.com/questions/5440724/…
  • 谢谢 - 我已经看到了,但是在将它应用到我的项目时遇到了麻烦。不过,这是正确的方向。

标签: jquery jquery-validate


【解决方案1】:

您的帖子中似乎缺少大量 HTML 代码,但您要查找的是 jQuery .each().children(),具体取决于您的处理方式。

.each() 适用于基于另一个元素(如数组)动态生成(和存储名称)id,.children() 适用于使用 jQuery .contains() 之类的方法遍历表的元素(是的,他们可以堆叠)。我知道这有点令人困惑,所以花点时间阅读上面的 jQuery 方法。

【讨论】:

  • 我只给出了部分代码(诚然,可能不是可以帮助其他人更清楚地理解我的问题的部分)。 JanR 为我指明了正确的方向。必须在创建新 ID 时添加验证规则。
【解决方案2】:

查看以下链接了解动态验证示例

http://jquery.bassistance.de/validate/demo/dynamic-totals.html

示例:标记

<textarea style="display:none" id="template">
    <div class="row" >
        <input name="form{0}" id="form{0}" title="Please enter your username" required >    
    </div>
</textarea>

<form id="orderform"  method="get" action="foo.html">
    <div id="orderitems">   
    </div>
     <input class="submit" type="submit" value="Submit"/>
</form>
<button id="add">Add another input to the form</button>

脚本:

    <script type="text/javascript">
// only for demo purposes
    $.validator.setDefaults({
        submitHandler: function() {
            alert("submitted!");
        }
    });
    $().ready(function() {
        $("#orderform").validate({
            errorPlacement: function(error, element) {
                error.appendTo( element.parent(".row"));
            }
        });

        var template = jQuery.validator.format($.trim($("#template").val()));

        function addRow() {
            $(template(i++)).appendTo("#orderitems");
        }

        var i = 1;
        // start with one row
        addRow();
        // add more rows on click
        $("#add").click(addRow);
    })
     </script>

【讨论】:

  • 答案应该是完全独立的,而不是仅仅依赖于外部链接的健康。请在您的答案中显示相关代码连同链接。
猜你喜欢
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 2015-07-17
  • 2017-02-15
  • 2016-02-29
  • 1970-01-01
相关资源
最近更新 更多