为了说明情况,下面的代码是经过简化的演示:
上面的代码,我们的目的是,点击按钮时,调用confirmSubmit('modify'); 函数,然后confirmSubmit('modify')函数将提交的控制交给 popWindow(formId, url); 函数,
但是如果在function confirmSubmit(methodName)函数中, 代码popWindow(formId, url); 的后面没有return 语句,或者是 return true; 而不是return false,
那么提交的控制根本就没有交给popWindow(formId, url);函数,不管,popWindow函数中是什么内容,都会向服务器提交。
这里的原因是,popWindow执行完,不管他返回的是true,还是false,confirmSubmit()函数都会继续执行下去。popWindow函数中的return语句只能回到confirmSubmit函数,但是她不是confirmSubmit函数的返回值。所以popWindow(formId, url);和return false;这两天语句可以合成一条语句:return popWindow(formId, url);将popWindow函数的返回值同时也做为confirmSubmit函数的返回值。
<input type="submit" value="确 定" name="method:modify" onclick="return confirmSubmit('modify')"/>
function confirmSubmit(methodName)
{
if (methodName == "modify"){
popWindow(formId, url);
return false; // 这里一定要使用return false,才会将控制权交给了popWindow函数
}
}
function popWindow(formId, url)
{
if(...){
$("#formId").prop("action", url).submit();
return true;
}else{
alert("error");
return false;
}
}
上面的代码,我们的目的是,点击按钮时,调用confirmSubmit('modify'); 函数,然后confirmSubmit('modify')函数将提交的控制交给 popWindow(formId, url); 函数,
但是如果在function confirmSubmit(methodName)函数中, 代码popWindow(formId, url); 的后面没有return 语句,或者是 return true; 而不是return false,
那么提交的控制根本就没有交给popWindow(formId, url);函数,不管,popWindow函数中是什么内容,都会向服务器提交。
这里的原因是,popWindow执行完,不管他返回的是true,还是false,confirmSubmit()函数都会继续执行下去。popWindow函数中的return语句只能回到confirmSubmit函数,但是她不是confirmSubmit函数的返回值。所以popWindow(formId, url);和return false;这两天语句可以合成一条语句:return popWindow(formId, url);将popWindow函数的返回值同时也做为confirmSubmit函数的返回值。