2013-10-14 59 views
0

我希望有一个简单的解释,但我还没有找到它。jQuery .submit([callback])内.click不起作用

我想触发一个表单提交一个事件,当表单提交时它应该有一个回调。我的代码在我使用事件触发.submit()时没有任何提交回调,并且提交回调在事件触发器外工作,但我没有设法使它们同时工作。

我的JavaScript如下:

$("#test_form #notabutton").click(function() { 
    alert("Checkpoint 1"); 
    $('#test_form').submit(function(event) { 
     alert("Checkpoint 2"); 
     return; 
    }); 
}); 

而且我的html:

<form id="test_form"> 
    <input type="checkbox" name="letter" value="Alpha">Alpha<br> 
    <input type="checkbox" name="letter" value="Bravo">Bravo 
    <!-- <input type="submit" value="Submit"> --> 
    <div id="notabutton" style="height:100px; width:100px; background-color:blue;"></div> 
</form> 

这里是很好的措施一的jsfiddle:http://jsfiddle.net/5bwGw/

任何想法我做错了什么?

回答

2

.submit() function以及类似的功能,如.click(),可以用来将动作绑定到事件或触发该事件。

如果你写foo.submit();,它然而,如果你写foo.submit(function() { alert('boing'); });,它作为一个短手foo.on('submit', function() { alert('boing'); });

个人作为短手foo.trigger('submit');

,我尽量避免使用短期并且直接使用.on(或以前的代码.bind)和.trigger,以避免混淆。

2

你没有触发提交,你正在设置一个函数来运行提交。

documentation对回调没有提及。

+0

再次查看API,看起来你是对的。 .submit()对于.on('submit',handler)和.trigger('submit')来说显然是简短的,但不是同时。 – Lee