我有一个稍微复杂的jQuery代码,在导航选项卡时使用form.submit。我在每个标签上都有一个表单。 form.submit调用ajax请求并返回isValid(一个表明表单是否已经过验证的变量)。在此之后,如果输入的数据无效,我想停止从选项卡导航。
我的Jquery代码有点像这样:
$(document).on('hide.bs.tab', '.nav-pills a', function (e) {
$('#form').submit(); //invokes the submit function
return isValid; //form.submit alters the value for this
});
我的isValid是一个全局变量。
var isValid=true;
$('#form').on('submit', function (e) {
//does an ajax request, and sets isValid to be true if form validation
//at back end is successful. Otherwise it's false
}
然而,似乎jQuery正在执行form.submit函数之前的return语句。
如果我在$(文件).on('hide.bs.tab','。nav-pills a',函数(e)中警告isValid,即使表单无效,我也会得到true,而同时如果form.submit中有isValid的警告声明,它会正确地给我false / true。
我读过这与延迟有关,但我不知道如何使用它。非常感谢任何帮助。
潜在解决方案
所以经过一些研究后,我在ajax请求中将asyncrhonous的属性设置为false,并且它开始按预期工作,但这是正确的方法吗?
答案 0 :(得分:1)
你能尝试这种方法吗?
$("#form").submit(function(event) {
/* stop form from submitting normally */
event.preventDefault();
/* get the action attribute from the <form action=""> element */
var $form = $( this ),
url = $form.attr( 'action' );
/* Send the data using post with element id name and name2*/
var posting = $.post( url, { name: $('#name').val(), name2: $('#name2').val() } );
/* Alerts the results */
posting.done(function( data ) {
alert('success');
});
});
希望有所帮助,