为什么表单的提交事件没有触发(jQuery)?
我有像这样的表单+布局:为什么表单的提交事件没有触发(jQuery)?
<form ...>
<div id="editor">
[form html]
<input type="submit" value="Submit form" />
</div>
</form>
而且下面的JavaScript:
$(function() {
var form = $('#editor').parents('form');
alert(form.length); // this alerts "1"
$(document).on('submit', 'form', function() {
alert('document form submit fired'); // this works as expected (alerts)
});
form.on('submit', function() {
alert('selected form submit fired'); // this is never alerted
});
});
这种形式是不是通过AJAX加载。当页面加载时,第一个对话框提醒“1”。但是,在提交表单时,只会触发一个警报 - 触发器为文档中的所有表单提交的警报。
为什么会发生这种情况?
It does work。发生其他事情正在阻止第二次警报开火。
你是对的。还有其他代码干扰。我想知道它可能是什么。事实证明,当覆盖$ .validator.settings.highlight和$ .validator.settings.unhighlight时,我有一个错误。 – danludwig 2012-02-12 15:22:40
您的表单选择器不正确。
尝试做这个
$("form").on('submit', function() {
很肯定这应该工作
事实上,如果没有被加载通过AJAX或动态通过JavaScript
你可以做
$("form").submit(function() {
编辑
划伤我的上面。没有看到你设置了表单的值。检查出http://jsfiddle.net/s3fvM/1/。似乎对我工作很好。都是射击和警报。
'form'是一个包含jQuery-wrapped表单元素的变量。 – tvanfosson 2012-02-12 14:28:23
现在我明白了。我只是在jsfiddle中做了这件事,两人都被解雇了。 [http://jsfiddle.net/s3fvM/](http://jsfiddle.net/s3fvM/1/) – Henesnarfel 2012-02-12 14:30:30
“划伤你的上面”你赞同那个编辑? – gdoron 2012-02-12 14:35:26
在js中为我工作http://jsfiddle.net/sERhZ/也许你的html甚至设置有问题? – 2012-02-12 14:30:21
事实上,鉴于处理程序,直接应用于表单的应该(并且确实)先发射。这是你的完整代码吗?浏览器控制台中是否有错误? – tvanfosson 2012-02-12 14:33:59
我敢打赌,你有第一个处理程序'返回false',防止第二个处理程序触发。我对吗? – gdoron 2012-02-12 14:38:06