【发布时间】:2016-02-19 06:40:09
【问题描述】:
我知道这个问题听起来很像一堆其他问题,但我发誓我无法在任何地方找到正确的解决方案。我有一个具有多个提交按钮的旧表单。如果单击了一个,我需要进行一些客户端验证并可能停止提交。如果另一个被点击,我不需要做这个验证。
我发现如果我创建一个.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;
}
});*/
});
我在这里缺少什么? 必须有一种方法可以做到这一点,而且看起来应该相当简单,但如果我有任何运气的话,我会被诅咒的。
谢谢。
【问题讨论】:
-
如果有多个提交,为什么你为他们使用相同的 id。使用不同的 id 并将点击函数绑定到每个提交按钮,因此无需找出点击了哪个提交。
-
@Sedat -- 他们没有相同的 id。我关心的是
#nextButton我正在捕获点击。我似乎无法阻止提交。 -
@RobWilkerson -
preventDefault应该可以正常工作:jsfiddle.net/interdream/DQNSb/1 -
@JamesAllardice -- 很奇怪。我想知道为什么它对我不起作用。我会检查我的 jQuery 版本...
-
您可以使用点击处理程序来检测按钮,然后使用
$('form').bind('submit', 'false');来阻止默认操作。
标签: jquery