【问题标题】:jQuery Validate same name in inputsjQuery在输入中验证相同的名称
【发布时间】:2012-01-27 16:18:50
【问题描述】:

此表单具有相同名称但相似(增量)ID 的输入。

表格应该验证是否有姓名,年龄必须是强制性的..

现在只有第一个输入是强制性的。

这是我的代码:

    <form id="people">
        <div class="section">
            <input id="person1" name="person" class="person" type="text" placeholder="First Name" />
            <input id="age1" name="age" class="age" type="text" placeholder="Age" />
        </div>
        <div class="section">
            <input id="person2" name="person" class="person" type="text" placeholder="First Name" />
            <input id="age2" name="age" class="age" type="text" placeholder="Age" />
        </div>
        <div class="section">
            <input id="person3" name="person" class="person" type="text" placeholder="First Name" />
            <input id="age3" name="age" class="age" type="text" placeholder="Age" />
        </div>
        ...
        <input type="submit" id="submit" name="submit" value="Add" />
    </form>
    <script type="text/javascript">
        $(function(){
            $('#people').validate();
            $('#submit').click(function(){
                $('[id^="person"]').each(function(){
                    if ($(this).val().length>0){
                        //alert($(this).val());
                        //alert($(this).parent().find('.age').val());
                        $(this).rules('add', {
                            required: true,
                            minlength: 2,
                            messages: {
                                required: "Specify the person name",
                                minlength: "Minimum of 2 characters"
                            }
                        });
                        $(this).parent().find('.age').rules('add', {
                            required: true,
                            number: true,
                            messages: {
                                required: "Must have an age",
                                number: "Specify a valid age"
                            }
                        });
                    }
                });
            });
        });
    </script>
</body>

【问题讨论】:

    标签: jquery validation field


    【解决方案1】:

    我没有 100% 的方法,但我认为有几个问题。一个是使用提交点击作为触发器可能会干扰单独调用来验证表单(即验证两次),第二个是输入没有唯一的名称。

    更新:

       <form id="people" method="post">
            <div class="section">
                <input id="person1" name="person1" class="person" type="text" placeholder="First Name" />
                <input id="age1" name="age1" class="age" type="text" placeholder="Age" />
            </div>
            <div class="section">
                <input id="person2" name="person2" class="person" type="text" placeholder="First Name" />
                <input id="age2" name="age2" class="age" type="text" placeholder="Age" />
            </div>
            <div class="section">
                <input id="person3" name="person3" class="person" type="text" placeholder="First Name" />
                <input id="age3" name="age3" class="age" type="text" placeholder="Age" />
            </div>
            <input type="submit" id="submit" name="submit" value="Add" />
        </form>
    
    
    $(function() {
        $('#people').validate();
    
        $('.person').blur(function() {
    
            if ($(this).val().length) {
    
                //alert($(this).val());
                //alert($(this).parent().find('.age').val());
                $(this).rules('add', {
                    required: true,
                    minlength: 2,
                    messages: {
                        required: "Specify the person name",
                        minlength: "Minimum of 2 characters"
                    }
                });
    
                $(this).next('input').rules('add', {
                    required: true,
                    number: true,
                    messages: {
                        required: "Must have an age",
                        number: "Specify a valid age"
                    }
                });
    
            }
        });
    });
    

    【讨论】:

    • 它只是验证第一个'行',你知道其他解决方案吗?
    • @Frarncisco 我第一次错过了这个,但是您需要在每个输入字段上具有唯一的 name= 属性。试一试我的更新代码。
    • 好吧,这就是这里的主要问题,因为我必须具有相同的名称属性..
    • 具有相同的名称适用于单选输入(因为它们是互斥的),但您的表单对象依赖于名称属性,因此它们应该是唯一的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多