我知道这个问题听起来很像其他问题,但我发誓我在任何地方都找不到正确的解决方案。我有一个具有多个提交按钮的旧表单。如果单击其中一个,我需要进行一些客户端验证并可能停止提交。如果单击另一个,我不需要进行此验证。
我发现如果我创建一个.submit()
处理程序,我似乎无法访问实际单击的按钮。另一方面,如果我捕获.click()
我需要担心的按钮事件,那么我无法阻止通过提交表单.preventDefault()
(or .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;
}
});*/
});
我在这里缺少什么?那里has作为一种方法来做到这一点,看起来应该相当简单,但如果我有运气的话,我就该死了。
Thanks.
也许是这样的?
http://jsfiddle.net/4wnyY/3/ http://jsfiddle.net/4wnyY/3/
var which;
$("input").click(function () {
which = $(this).attr("id");
});
$("#form").submit(function () {
if (which == "button2") {
return false; // if "button2" submit clicked - prevent submission
}
});
这段代码的主要问题是浏览器兼容性 - 我不知道是否所有浏览器都工作相同,是否会在提交之前捕获点击事件。我记得在一个版本的 IE(也许是 7)上它是不同的。但它是可以修复的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)