javascript - jquery 验证插件 ajax 提交不工作

标签 javascript jquery html ajax twitter-bootstrap

我使用 jquery 验证插件在 Bootstrap 模式表单中进行验证,当我发送表单时,jquery 验证插件不工作,表单也无法发送。

Bootstrap 模态形式

 <div class="modal fade" id="form-content" tabindex="-1" role="dialog"
             aria-labelledby="myModalLabel" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close"
                                data-dismiss="modal" aria-hidden="true">
                            &times;
                        </button>
                        <h3>send message</h3>
                    </div>
                    <div class="modal-body">
                        <form class="contact">
                            <fieldset>
                                <div class="modal-body">
                                    <ul class="nav nav-list">
                                        <div class="form-group">
                                            <label for="topic" class="control-label ">topic:</label>
                                            <input class="form-control"  type="text" name="topic">
                                            <span class="help-block"></span>
                                        </div>
                                        <div class="form-group">
                                            <label for="ruser" class="control-label ">ruser: </label>
                                            <input class="form-control"  type="text" name="ruser">
                                            <span class="help-block"></span>
                                        </div>
                                        <div class="form-group">
                                            <label for="content" class="control-label ">content:</label>
                                            <textarea class="form-control" name="content" rows="3"></textarea>
                                            <span class="help-block"></span>
                                        </div>
                                    </ul>
                                </div>
                            </fieldset>
                        </form>
                    </div>
                    <div class="modal-footer">
                        <button class="btn btn-success" type="submit">send</button>
                        <a href="#" class="btn" data-dismiss="modal">close</a>
                    </div>
                </div><!-- /.modal-content -->
            </div><!-- /.modal -->
        </div>


                 <button class="btn btn-success btn-lg" data-toggle="modal"
                                    data-target="#form-content">
                                send message
                            </button>

JavaScript

$(document).ready(function(){
    $('form').validate({
        rules: {
            topic: {
                required: true
            },
            ruser: {
                required: true
            },
            content: {
                required: true
            }
        },

        messages : {
            topic: {
                required: 'enter topic'
            },
            ruser: {
               required: 'enter ruser'
            },
            content: {
                required: 'enter content'
            }
        },
        highlight: function(element) {
            $(element).closest('.form-group').addClass('has-error');
        },
        unhighlight: function(element) {
            $(element).closest('.form-group').removeClass('has-error');
        },
        errorElement: 'span',
        errorClass: 'help-block',
        errorPlacement: function(error, element) {
            if(element.parent('.input-group').length) {
                error.insertAfter(element.parent());
            } else {
                error.insertAfter(element);
            }
        }

        submitHandler: function (form) {
            alert('valid form submission'); // for demo
            $.ajax({
                type: "POST",
                url: "process.php",
                data: $('form.contact').serialize(),
                success: function(msg){
                    if(msg=='no'){
                        alert(msg);
                    }
                    else if(msg=='ok!'){
                        alert(msg);
                        location.reload()
                    }
                },
                error: function(){
                    alert("failure");
                }
            });
            return false;
        }
    });
});

我该如何解决这个问题?

jsfiddle

最佳答案

问题是提交按钮不是您尝试提交的表单的后代。

一个可能的解决方案是为按钮编写一个点击处理程序,然后从那里调用表单提交

        <div class="modal-footer">
            <button class="btn btn-success" id="submitcontact">send</button>
            <a href="#" class="btn" data-dismiss="modal">close</a>
        </div>

然后

$('#submitcontact').click(function(){
    $('form.contact').submit();
})

演示:Fiddle

关于javascript - jquery 验证插件 ajax 提交不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29861083/

相关文章:

javascript - Web 应用程序的问题

javascript - 如何折叠左侧面板?

javascript - HTML 输入范围无法获取当前值

javascript - CSS HTML 最后一个 child 不工作?

javascript - 表格单元格内的文本框周围没有边距

javascript - 在手机上查看时隐藏边框

javascript - 使用 ngModel 进行 Angular 2 单元测试

jquery - ajax链式调用完成

html - 在不使用无窗口模式的情况下在 Silvlerlight 中呈现 HTML 富文本

html - 子div的宽度大于父div