【问题标题】:jQuery Validation not working on jQuery UI DialogjQuery 验证不适用于 jQuery UI 对话框
【发布时间】:2015-02-15 03:46:46
【问题描述】:

我在使用带有 jquery ui 对话框的 jquery 验证插件 (http://jqueryvalidation.org) 时遇到问题。 我在这里读过:jQuery UI Dialog validation without using <form> tags 但建议的那些仍然不起作用。

下面是我的 jQuery:

$( '#addModal' ).dialog({
    autoOpen: false,
    modal: true,
    buttons: {
        'Create': function() {
            $( '#addForm' ).validate({
                rules: {
                    titleAdd: { required: true },
                    descriptionAdd: { required: true }
                },

                submitHandler: function( form ) {
                    $( this ).dialog( 'close' );

                    // ... AJAX call 

                } //end submitHandler
            }); //end validate()
        },
        Cancel: function() {
            $( this ).dialog( 'close' );
        }
    } //end buttons
}); //end Create Form Modal

以下是 HTML:

<div id="addModal" title="Add new Appointment">
<form name="addForm" id="addForm" action="" method="POST" accept-charset="utf-8">
    <div class="row">
        <div class="form-group col-md-12">
            <label for="title">Appointment Title</label>
            <input type="text" id="titleAdd" class="form-control" name="title" />
        </div>
    </div>
    <div class="row">
        <div class="form-group col-md-12">
            <label for="description">Description</label>
            <textarea id="descriptionAdd" name="description" cols="20" rows="4" class="form-control"></textarea>
        </div>
    </div>

    <div class="row">
        <div class="col-md-2">
            <input type="submit" name="save" value="Save" class="form-control btn btn-default btn-primary" tabindex="-1" style="position:absolute; top:-1000px">
        </div>
    </div>
    <input type="hidden" id="id" name="id" />
</form>

我什至尝试过建议的:https://stackoverflow.com/a/2142126

甚至这个: https://stackoverflow.com/a/7390327 也试过这个:https://stackoverflow.com/a/18721278 还是不行。

【问题讨论】:

    标签: jquery jquery-ui jquery-validate jquery-ui-dialog


    【解决方案1】:

    看来我解决了我自己的问题。

    我将 validate() 移到对话框之外并更改了规则。 我之前用id 做规则,从不知道应该是input name

    $('#addForm').validate({
        rules: {
            title: { required: true },
            description: { required: true }
        }
    });
    
    $( '#addModal' ).dialog({
        autoOpen: false,
        modal: true,
        buttons: {
            'Create': function() {
                if ( $( '#addForm' ).valid()  ) {
                    $( this ).dialog( 'close' );
    
                    // ... AJAX call 
    
                } //end if
    
            },
                Cancel: function() {
                    $( this ).dialog( 'close' );
                }
        } //end buttons
    }); //end Create Form Modal
    

    【讨论】:

    • 我也快要回答这个 jsfiddle.net/80hu5b2e/1 了,我确实解决了这个问题,但很高兴你自己找到了解决方案。
    • 因为.validate()初始化方法,而.valid()测试方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多