0

当您按下表单页面上的按钮时,将重新加载。

$(document).on('click', '.share_file_form', function(event) {
    $(event.target).validate({
        submitHandler: function(form) {
            $.ajax({
                type: "POST",
                url: "http://api.server.com/share/",
                timeout: 20000,
                data: $(form).serialize(),
                beforeSend: function() {
                },
                success: function(msg){
                },
                error: function(msg){
                }
            });
        }
    });    
});

怎么了?怎么了?怎么了?

4

3 回答 3

0

event.preventDefault();在函数末尾添加一个。这可以防止在您的功能完成时触发默认事件(即表单提交)。

$(document).on('click', '.share_file_form', function(event) {
    $(event.target).validate({
        submitHandler: function(form) {
            $.ajax({
                type: "POST",
                url: "http://api.server.com/share/",
                timeout: 20000,
                data: $(form).serialize(),
                beforeSend: function() {
                },
                success: function(msg){
                },
                error: function(msg){
                }
            });
        }
    });    

     event.preventDefault();

});
于 2013-11-12T20:15:36.633 回答
0

验证插件实际上并不是这样工作的。您的代码看起来有点难以推理,因为您将验证附加到单击事件。如果你像这样实现它会发生什么:

(function ($, undefined) {
    'use strict';
    function submitHandler (form) {
       $.ajax({
           type: "POST",
           url: "http://api.server.com/share/",
           timeout: 20000,
           data: $(form).serialize(),
           beforeSend: function() {},
           success: function(msg) {},
           error: function(msg) {}
       });
    }
    $(function () {
        $('.share_file_form').validate({
            submitHandler: submitHandler
        });
    });
}(jQuery));
于 2013-11-12T20:17:34.447 回答
0

引用操作

“怎么了?怎么了?怎么了?”

你的代码,你的代码,你的代码构造不正确。

$(document).on('click', '.share_file_form', function(event) {
    $(event.target).validate({
        submitHandler: function(form) {
            $.ajax({...});
        }
    });    
});

引用操作:

“当您按下表单页面上的按钮时,会重新加载。”

是的,那是因为当您单击按钮时验证插件尚未初始化。

.validate()不是测试方法;它是插件的初始化方法。 它只被调用一次,通常在 DOM 就绪时,用于初始化表单上的插件。

您永远不需要将它包含在click事件处理程序中,因为插件已经自动捕获了每个相关的鼠标事件。

您也不允许附加.validate()到对象以外的任何东西上<form>

这是您的代码的工作版本...

$(document).ready(function() {         // <-- DOM Ready event

    $('.share_file_form').validate({   // <-- initialize plugin on form
        submitHandler: function(form) {
            $.ajax({...});
            return false;              // <-- block regular submit when using ajax
        }
    });    

});

演示:http: //jsfiddle.net/Ck3sX/

于 2013-11-13T17:37:07.033 回答