我知道这个问题听起来很像其他一些人,但我发誓我无法在任何地方找到合适的解决方案.我有一个具有多个提交按钮的遗留表单.如果单击一个,我需要进行一些客户端验证并可能停止提交.如果单击另一个,我不需要进行此验证.
我发现如果我创建一个.submit()处理程序,我似乎无法访问实际点击的按钮.另一方面,如果我捕获了.click()我需要担心的按钮事件,那么我无法阻止表单通过.preventDefault()(或.stopImmediatePropagation())提交.
这是尝试使用按钮.click()处理程序的代码的最新迭代:
$('#nextButton').click( function( e ) {
e.preventDefault(); // The form submits anyway (which kind of makes sense)
// return false also doesn't prevent the submission
// If any session question is unanswered, abort
/* $('#registrants input:text[id$="Answer"]').each( function( i, input ) {
if( $.trim( $(input).val() ) == '' ) {
submit = false;
}
});*/
});
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?有有是一个办法做到这一点,现在看来似乎应该是相当简单的,但如果我有运气的话我会被定罪.
谢谢.
也许是这样的?
var which;
$("input").click(function () {
which = $(this).attr("id");
});
$("#form").submit(function () {
if (which == "button2") {
return false; // if "button2" submit clicked - prevent submission
}
});
Run Code Online (Sandbox Code Playgroud)
此代码的主要问题是浏览器兼容性 - 如果点击事件将在提交之前被捕获,我不知道所有浏览器是否都工作相同.我记得在IE的一个版本上有所不同,可能是7.但它是可以修复的.
基本上它的意思是检查表单submit() 处理程序中的按钮ID。