通过烟雾确认提交带有jQuery验证的表单

时间:2013-12-19 15:50:25

标签: jquery twitter-bootstrap jquery-validate

我想提交表单 - 在通过smoke选项(bootstrap 2.0.3)批准了构造窗口之后。这是完美的工作,直到我插入验证,但现在,即使你确认 - 没有任何反应。表格不提交。

这是我的代码,尝试了几个选项。

你们的赞赏表示赞赏!

$("#enroller").validate({
            submitHandler: function() {
            //tried also: submitHandler: function(form) {

                var selectedCount = $(".gradeOption[value!='']").length;

                var questionAmount = selectedCount; // count how many fields were filled

                smoke.confirm('you are about to submit '+questionAmount+' grades - please confirm.',function(e){
                    if (e){
                        $("#enroller").submit();
                        //tried also: $(form).submit();
                    }else{
                        smoke.alert('save was cancelled', {ok:"close"});
                    }
                }, {ok:"yes - save", cancel:"cancel"});


            } //submitHandler

}); //validate

1 个答案:

答案 0 :(得分:1)

当您使用submitHandler回调函数时,您必须通过submit或默认ajax {{1}将某种form重新编入其中}。

action逻辑的适当位置,添加submitHandler,会立即触发提交默认$(form).submit(); form

action

注意

  • 要使用submitHandler: function(form) { // <- pass in the "form" argument // your other code $(form).submit(); // <- trigger default form action } ,您必须将$(form).submit();参数传递给该函数。

  • 您的form代码中必须包含有效的action属性。

如你所见,它正在运作:http://jsfiddle.net/wD2Qn/


我注意到代码中存在以下语法错误。你有一个大括号<form>会过早地关闭}函数,从而打破了jQuery Validate插件。

submitHandler

修改

他们的文档非常稀疏但我的猜测是submitHandler: function() { var selectedCount = $(".gradeOption[value!='']").length; var questionAmount = selectedCount; // count how many fields were filled } // <--- what is this?? Prematurely closes 'submitHandler' function smoke.confirm('you are about to submit '+questionAmount+' grades - please confirm.',function(e){ if (e){ $("#enroller").submit(); //tried also: $(form).submit(); }else{ smoke.alert('save was cancelled', {ok:"close"}); } }, {ok:"yes - save", cancel:"cancel"}); } //submitHandler JavaScript插件根本无法在其函数中处理任何jQuery。

代替smoke.js,尝试使用纯JavaScript版本:

$(form).submit()