方案
我有这样的表格:
<form action="EditShippingInfo.asp" method="POST" id="frmShippingInfo">
<!-- stuff -->
<input type="image" id="EditShippingInfo" onclick="javascript:checkShippingInfo(this.form);" src="/img/btn_save.gif" />
</form>
checkShippingInfo
函数运行一些输入验证控件。最终它通过AJAX运行服务器端控件:
function checkShippingInfo(form){
/* runs validation controls */
var data = setDataForAjax;
$.ajax({
type: 'GET',
url: '/include/checkAddresses.asp',
data: data,
async: false,
success: function (m) {
if (m == 0) {
/* I want to run form.submit only if m=0 */
form.submit();
}
else {
/* otherways I display a message */
alert(m);
return false;
}
}
});
}
但即使m!= 0,表单提交也会被触发 。
问题
我想在某种条件下触发form.submit
。
input type="image"
是否会以任何形式触发提交?
答案 0 :(得分:3)
事实
提交输入上的onclick事件应始终触发表单提交。
除非 onclick事件处理程序显式返回FALSE
。
在此之后,我的代码中缺少两个重要的细节。
解决方案
onclick事件处理程序中的return
关键字。
onclick="javascript:return checkShippingInfo(this.form);"
return
函数中的checkShippingInfo
值。
function checkShippingInfo(form)
{
/* do the validation control... */
/* do the ajax call... */
/* I prevent the form submit */
return false;
}
答案 1 :(得分:0)
function checkShippingInfo(form){
/* runs validation controls */
var data = setDataForAjax;
$.ajax({
type: 'GET',
url: '/include/checkAddresses.asp',
data: data,
async: false,
success: function (m) {
if (parseInt(m) == 0) { //use parseInt here to get integer value
/* I want to run form.submit only if m=0 */
form.submit();
}
else {
/* otherways I display a message */
alert(m);
return false;
}
}
});
}