我很确定这应该不会那么难。我有一个在提交时运行以下函数的表单:
function FORMVALIDATE_add_rota_entry() {
var rota_date = $("#rota_date").val();
var rota_id = $("#rota_id").val();
var am_pm = $("#am_pm").val();
if(rota_date == "")
{
alert("Please enter a date.");
return false;
}
if(rota_id == "error")
{
alert("Please select a rota from the list.");
return false;
}
// check if that rota has already been entered for that date and am/pm
$.ajax({
async:false,
type:"POST",
url:"/modules/rotas/check_rota_entry_existence",
data:{rota_date:rota_date, rota_id:rota_id, am_pm:am_pm},
success: function(result) {
if(result != "0")
{
alert("This rota has already been added to this date, "+am_pm+".");
return false;
}
}
});
}
它在表单标签中通过以下方式调用:
onsubmit="return FORMVALIDATE_add_rota_entry();"
它在前两个(rota_date 和 rota_id)上工作得很好,当它们应该出现警报时,它会阻止表单提交,但是当它到达 ajax 调用时,它会很好地工作,返回正确的结果,当它出现时发出警报应该,但 return false 似乎并没有阻止表单提交。有谁有任何想法,因为我很难过!
Thanks!
你做错了。按照你这样做的方式,你应该让函数始终返回 false:
function FORMVALIDATE_add_rota_entry() {
var rota_date = $("#rota_date").val();
var rota_id = $("#rota_id").val();
var am_pm = $("#am_pm").val();
if(rota_date == "")
{
alert("Please enter a date.");
return false;
}
if(rota_id == "error")
{
alert("Please select a rota from the list.");
return false;
}
// check if that rota has already been entered for that date and am/pm
$.ajax({
async:false,
type:"POST",
url:"/modules/rotas/check_rota_entry_existence",
data:{rota_date:rota_date, rota_id:rota_id, am_pm:am_pm},
success: function(result) {
if(result != "0")
{
alert("This rota has already been added to this date, "+am_pm+".");
return false;//this is called when the server responds....which in your case isnt happening in the first place
}
}
});
return false;//this should be at the end so 'false' is always returned to 'onsubmit'
}
唯一的目的是return false;
if 语句中的它用于阻止 ajax 代码运行。但函数末尾也应该有一个。
这应该是一个更容易的修复:
onsubmit="FORMVALIDATE_add_rota_entry();return false;"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)