Javascript 提交表单时,检查一个值,如果该值存在,将弹出一个模式窗口以获取更多信息
我有一个使用jQuery验证的表单。单击Submit按钮,表单将通过ajax进行验证和提交。我想在此过程中添加一个步骤 我想检查是否存在一个值,比如x。如果x不在表格中,我想继续并提交它,因为我已经这样做了。如果是在表单中,我想打开一个模式窗口,请求进一步的信息,然后提交表单,并将额外的信息添加到请求中 目前,我可以得到模式触发,但表单只是继续提交当用户处理模式时,如何使表单提交暂停? jqueryvalidate有一个“success”选项,在成功验证之后调用(我想检查是否触发了模式),但仍然不会暂停执行Javascript 提交表单时,检查一个值,如果该值存在,将弹出一个模式窗口以获取更多信息,javascript,jquery,validation,form-submit,Javascript,Jquery,Validation,Form Submit,我有一个使用jQuery验证的表单。单击Submit按钮,表单将通过ajax进行验证和提交。我想在此过程中添加一个步骤 我想检查是否存在一个值,比如x。如果x不在表格中,我想继续并提交它,因为我已经这样做了。如果是在表单中,我想打开一个模式窗口,请求进一步的信息,然后提交表单,并将额外的信息添加到请求中 目前,我可以得到模式触发,但表单只是继续提交当用户处理模式时,如何使表单提交暂停? jqueryvalidate有一个“success”选项,在成功验证之后调用(我想检查是否触发了模式),但仍然
简而言之:如何验证提交的表单,检查值x是否存在,如果不存在,则提交表单,但如果存在,则暂停提交,弹出一个模式窗口,让用户填写更多数据(并可能单击某种“完成”或“取消”按钮),将其添加到收集的表格数据中,然后提交批次?暂停提交部分让我感到困惑。不能暂停表单提交,但如果在表单的onsubmit事件中返回false,则可以取消表单提交。从模式窗口获取附加数据后,只需将数据添加到表单并通过javascript重新提交即可。您不能暂停表单提交,但如果表单的onsubmit事件返回false,则可以取消表单提交。从模式窗口获取附加数据后,只需将数据添加到表单中,然后通过javascript重新提交即可。钩住表单的提交功能:
$('form').submit(function() {
if (x !== undefined) {
$('#dialog').show();
return false;
}
});
钩住表单的提交功能:
$('form').submit(function() {
if (x !== undefined) {
$('#dialog').show();
return false;
}
});
在第一个表单上使用submit()
$('#form1').submit(function() {
// The below validation goes in here
});
验证它
$("#form1").validate({
// Whatever rules you want to validate by
});
检查表格是否有效
if($('#form1').valid()) {
// Branching on x, example below, will go in here
} else {
// It's not valid, stop the submission
return false;
}
x上的分支。如果存在,请打开模式,如果不存在,请返回true以按原样提交表单
if (x !== undefined) {
// Here is where you also need to pass the other form data to the modal
// append hidden text fields to the form and populate with the values
// Open your modal window, then stop the default submit process
$('#themodalwindow').openModal();
return false;
} else {
// No x so submit the form as is
return true;
}
现在您必须在模式中提交表格
$('#form2').submit(function() {
return true;
});
如果您将表格1中收集的数据附加到表格2中,那么提交表格将包括您需要的所有内容。顺便说一句,您可以在其中缓存一些内容,但这是它的要点。在第一个表单上使用submit()
$('#form1').submit(function() {
// The below validation goes in here
});
验证它
$("#form1").validate({
// Whatever rules you want to validate by
});
检查表格是否有效
if($('#form1').valid()) {
// Branching on x, example below, will go in here
} else {
// It's not valid, stop the submission
return false;
}
x上的分支。如果存在,请打开模式,如果不存在,请返回true以按原样提交表单
if (x !== undefined) {
// Here is where you also need to pass the other form data to the modal
// append hidden text fields to the form and populate with the values
// Open your modal window, then stop the default submit process
$('#themodalwindow').openModal();
return false;
} else {
// No x so submit the form as is
return true;
}
现在您必须在模式中提交表格
$('#form2').submit(function() {
return true;
});
如果您将表格1中收集的数据附加到表格2中,那么提交表格将包括您需要的所有内容。顺便说一句,您可以在其中缓存一些内容,但这是它的要点。但是在返回false之后,如何提交表单数据以及在模式中输入的额外数据?打开模式并返回false后,我是否会丢失表单数据?您需要从表单中收集数据,并将其粘贴到您将在模式中使用的表单(您提到的“进一步信息”)中,否则您将丢失它,是的。当他们从对话框提交信息时,您可以钩住事件并在窗体上创建隐藏字段。给它一个ID/名称,当表单提交时,它将与其余的输入元素一起序列化。理想情况下,不必检查(x!==未定义),您应该检查(x!==未定义&&x.value!==''),这样您就可以填充该变量并重新提交表单,而不是创建新的隐藏字段。但是在返回false后,如何提交表单数据以及在模式中输入的额外数据?打开模式并返回false后,我是否会丢失表单数据?您需要从表单中收集数据,并将其粘贴到您将在模式中使用的表单(您提到的“进一步信息”)中,否则您将丢失它,是的。当他们从对话框提交信息时,您可以钩住事件并在窗体上创建隐藏字段。给它一个ID/名称,当表单提交时,它将与其余的输入元素一起序列化。理想情况下,与其检查(x!==未定义),不如检查(x!==未定义&&x.value!==''),这样您就可以填充该变量并重新提交表单,而不是创建新的隐藏字段。