为什么表单的提交事件没有触发(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”。但是,在提交表单时,只会触发一个警报 - 触发器为文档中的所有表单提交的警报。

为什么会发生这种情况?

+0

在js中为我工作http://jsfiddle.net/sERhZ/也许你的html甚至设置有问题? – 2012-02-12 14:30:21

+0

事实上,鉴于处理程序,直接应用于表单的应该(并且确实)先发射。这是你的完整代码吗?浏览器控制台中是否有错误? – tvanfosson 2012-02-12 14:33:59

+0

我敢打赌,你有第一个处理程序'返回false',防止第二个处理程序触发。我对吗? – gdoron 2012-02-12 14:38:06

It does work。发生其他事情正在阻止第二次警报开火。

+0

你是对的。还有其他代码干扰。我想知道它可能是什么。事实证明,当覆盖$ .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/。似乎对我工作很好。都是射击和警报。

+1

'form'是一个包含jQuery-wrapped表单元素的变量。 – tvanfosson 2012-02-12 14:28:23

+0

现在我明白了。我只是在jsfiddle中做了这件事,两人都被解雇了。 [http://jsfiddle.net/s3fvM/](http://jsfiddle.net/s3fvM/1/) – Henesnarfel 2012-02-12 14:30:30

+0

“划伤你的上面”你赞同那个编辑? – gdoron 2012-02-12 14:35:26