jQuery 验证不适用于 jQuery UI 对话框

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

我在使用 jquery 验证插件 ( http://jqueryvalidation.org ) 和 jquery ui 对话框时遇到问题。 我在这里读过: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 还是不行。

最佳答案

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

我将 validate() 移到了对话框之外并更改了规则。 我之前使用 id 作为规则,但从来不知道它应该是输入名称

$('#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

关于jQuery 验证不适用于 jQuery UI 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28522804/

相关文章:

javascript - Django 。使用 Jquery Validate 和 ajax 确保用户名是唯一的

javascript - 创建计算输入框的动态表单

javascript - 定位和 z-index 问题

javascript - 按 ],[ 分割字符串并创建 json 对象

javascript 插件 - 面向对象?

javascript - Jquery Validate - 无法使验证器工作

jquery-ui - jquery Accordion - 从外部链接单击返回时记住事件区域

css - jQuery Tabs CSS UI 问题

jquery - 如何根据特定条件动态创建 jQuery ui 选项卡?

javascript - jQuery 表单回调兼容性问题