【问题标题】:Jquery Validation Rules with If/ Else statement带有 If/Else 语句的 Jquery 验证规则
【发布时间】:2014-09-09 00:20:22
【问题描述】:

此代码有效,但我需要它基本上在 id 字段上执行 If Else。如果 id 长度大于 0,则不检查名称、邮政编码。如果 id 不 > 0,则根据需要检查名称、邮政编码等。欢迎您提出建议。谢谢,

 runAllForms();
 $(function () {
 $("#artist_create_event").validate({

        // Rules for form validation
        rules : {
            artist_create_event_name : {
                required : true
            },
            artist_create_event_desc : {
                required : true
            },
            id :  {
                required : true
             },
            name :  {
                required : true
             },
            zipcode :  {
                required : true
             },
            venue_name :  {
                required : true
             },
            city :  {
                required : true
             },
            state :  {
                required : true
             },
            location :  {
                required : true
             },
            event_address : {
                required : true
            }
        },

        // Messages for form validation
        messages : {
            artist_create_event_name : {
                required : 'Enter Event Name'
            },
            artist_create_event_desc : {
                required : 'Enter Event Description'
            },
            name : {
                required : 'Enter Venue Name'
            },
            zipcode : {
                required : 'Please enter Zipcode/Postalcode'
            },
            venue_name : {
                required : 'Enter Venue Name'
            },
            city : {
                required : 'Please enter City'
            },
            state : {
                required : 'Please enter State'
            },
            location : {
                required : 'Please enter Country'
            },
            event_address : {
                required : 'Please enter Address'
            }
        },

 //  Do not change code below
        errorPlacement : function(error, element) {
            error.insertAfter(element.parent());
        },
    // Ajax form submition
   submitHandler: function() {
    $('#artist_create_event').hide(0);
    $('#art_event_message').hide(0);
    $.ajax({
        url : 'artist_update_event.php',
        type : 'POST',
        dataType : 'json',
        data: {
            artist_create_event_name: $('#artist_create_event_name').val(),
            artist_create_event_desc: $('#artist_create_event_desc').val(),
            name: $('#name').val(),
            city:  $('#city').val(),
            state:  $('#state').val(),
            location:  $('#location').val(),
            zipcode:  $('#zipcode').val(),
            event_address : $('#event_address').val(),
            event_address2 : $('#event_address2').val()
        },
        success : function(data){
            $('#art_event_message').removeClass().addClass((data.error === true) ? 'error' :     'success')
                .text(data.msg).show(500);
            if (data.error === true) {
                if (data.goto == 1)       {
 delete json;
                }
                else {
                $('#artist_create_event').show(500);
delete json;
                }
                 }
            if (data.error === false) {

                $('#artist_create_event').show(500);
delete json;
                }
                },
        error : function(XMLHttpRequest, textStatus, errorThrown) {
            $('#art_event_message').removeClass().addClass('error')
alert('The error was: '+errorThrown);
alert('The error was: '+XMLHttpRequest);
alert('The error was: '+textStatus);
//                  .text('response.Text').show(500);
            $('#artist_create_event').show(500);
        }
    });

    return false;
    }

    });

});

【问题讨论】:

    标签: javascript jquery ajax jquery-validate validationrules


    【解决方案1】:

    假设id 是输入字段的名称,您可以将 required 的值作为函数传递,如下所示

    var $id = $('input[name="id"]')
    $("#artist_create_event").validate({
    
        // Rules for form validation
        rules: {
            artist_create_event_name: {
                required: true
            },
            artist_create_event_desc: {
                required: true
            },
            id: {
                required: true
            },
            name: {
                required: function () {
                    return $id.val().length > 0;
                }
            },
            zipcode: {
                required: function () {
                    return $id.val().length > 0;
                }
            },
            venue_name: {
                required: true
            },
            city: {
                required: true
            },
            state: {
                required: true
            },
            location: {
                required: true
            },
            event_address: {
                required: true
            }
        },
    
        // Messages for form validation
        messages: {
            artist_create_event_name: {
                required: 'Enter Event Name'
            },
            artist_create_event_desc: {
                required: 'Enter Event Description'
            },
            name: {
                required: 'Enter Venue Name'
            },
            zipcode: {
                required: 'Please enter Zipcode/Postalcode'
            },
            venue_name: {
                required: 'Enter Venue Name'
            },
            city: {
                required: 'Please enter City'
            },
            state: {
                required: 'Please enter State'
            },
            location: {
                required: 'Please enter Country'
            },
            event_address: {
                required: 'Please enter Address'
            }
        },
    
        //  Do not change code below
        errorPlacement: function (error, element) {
            error.insertAfter(element.parent());
        },
        // Ajax form submition
        submitHandler: function () {
            $('#artist_create_event').hide(0);
            $('#art_event_message').hide(0);
            $.ajax({
                url: 'artist_update_event.php',
                type: 'POST',
                dataType: 'json',
                data: {
                    artist_create_event_name: $('#artist_create_event_name').val(),
                    artist_create_event_desc: $('#artist_create_event_desc').val(),
                    name: $('#name').val(),
                    city: $('#city').val(),
                    state: $('#state').val(),
                    location: $('#location').val(),
                    zipcode: $('#zipcode').val(),
                    event_address: $('#event_address').val(),
                    event_address2: $('#event_address2').val()
                },
                success: function (data) {
                    $('#art_event_message').removeClass().addClass((data.error === true) ? 'error' : 'success')
                        .text(data.msg).show(500);
                    if (data.error === true) {
                        if (data.goto == 1) {
                            delete json;
                        } else {
                            $('#artist_create_event').show(500);
                            delete json;
                        }
                    }
                    if (data.error === false) {
    
                        $('#artist_create_event').show(500);
                        delete json;
                    }
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    $('#art_event_message').removeClass().addClass('error')
                    alert('The error was: ' + errorThrown);
                    alert('The error was: ' + XMLHttpRequest);
                    alert('The error was: ' + textStatus);
                    //                  .text('response.Text').show(500);
                    $('#artist_create_event').show(500);
                }
            });
    
            return false;
        }
    
    });
    

    【讨论】:

    • 谢谢。我会试一试并报告。谢谢,
    • @GrantNoel 您可能必须根据需要检查$id.val().length > 0...例如是否检查是否在id 字段中输入了任何内容,或者它没有值''0
    • @GrantNoel 如果传递的函数返回 true,则该字段是必需的,否则不需要
    【解决方案2】:

    假设 id 是文本框的 id。你可以这样做:

        name :  {
                required : $("#id").val().length <= 0
             },
    
        zipcode :  {
                required : $("#id").val().length <= 0
             },
    

    【讨论】:

    • Ternery 运算符永远不需要像这样的? false : true — 它可以简单地表示为布尔值{ required : $("#id").val().length &lt;= 0 ),
    • id是隐藏字段。如果用户选择自动完成,则 id 有一个值,否则 id 为空。如果它有值,则只将 id 传递给 ajax,如果没有值,则传递其他所有内容。因此,如果我假设规则和消息,我需要做一个,但也只需要传递 id 或使用 json 传递其他所有内容。谢谢
    • 这里有几个违规行为...规则依赖于name 而不是id,并且插件有depends 方法。隐藏字段不能设置为required。不能如图所示设置required,否则会在运行时设置
    • 好吧,如果它是隐藏字段,它应该这样工作..你检查过答案吗? @格兰特诺埃尔
    • 嗨,Masum7,是的,它似乎在规则中起作用。谢谢。我还需要在通过 json 传递信息的 ajax 调用中做类似的事情。如果设置,我只想传递 id,否则传递其他所有内容。有任何想法吗。谢谢,格兰特
    猜你喜欢
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多