Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $.fn.submit()事件不';t在内部触发<;iframe>;_Javascript_Jquery_Html_Forms_Iframe - Fatal编程技术网

Javascript $.fn.submit()事件不';t在内部触发<;iframe>;

Javascript $.fn.submit()事件不';t在内部触发<;iframe>;,javascript,jquery,html,forms,iframe,Javascript,Jquery,Html,Forms,Iframe,简单地说,我有一个表单和一个字段。 $(函数(){ $(“#内部表单”)。提交(函数(){ 警报('触发内部提交!'); }); }); 虽然我无法回答“为什么”,但以下是我在测试时的一些发现: 将.submit()操作替换为 $('#the_frame').contents().find('#inner_form input[type="submit"]').click(); 将触发警报。但这并不是一个合适的解决方案,因为有更多的方式提交表单。不过,这表明这些事件并没有完全破裂。所以我挖得

简单地说,我有一个表单和一个字段。

$(函数(){
$(“#内部表单”)。提交(函数(){
警报('触发内部提交!');
});
});

虽然我无法回答“为什么”,但以下是我在测试时的一些发现:

.submit()
操作替换为

$('#the_frame').contents().find('#inner_form input[type="submit"]').click();
将触发警报。但这并不是一个合适的解决方案,因为有更多的方式提交表单。不过,这表明这些事件并没有完全破裂。所以我挖得更深


我尝试使用本机javascript事件,而不是jquery的
.submit([function])
bind in inner.html:

<form id="inner_form" onsubmit="alert('hi')">
因此,jQuery设置和/或检测自己的
submit()
方法的方式似乎有问题


再试一次:

$('#inner_form').on('submit', function() {
    alert('Inner submit is triggered!');
});
这也显示了提交

我的猜测是,由于某种原因,
inner.html
中的事件被绑定时,它还不知道形式,即使绑定通过
$(function(){..}包装在隐式document.ready事件中


至于这件事的方式和原因,我一无所知,但解决办法很简单:用
.on()
方法包装你的事件绑定。

我不确定我是否明白,你在inner.html中包含了第一个事件处理程序,对吗?@adeneo是的,每个片段中的脚本都在
html
中,我将更改代码段以使其更清晰。不确定这是否必要,但您是否在iframe文档中包含jQuery?@Spokey您可以检查代码问题,我会更新它。最后,可能一种稳定的修复方法是使用
,然后单击它。
$('#inner_form').on('submit', function() {
    alert('Inner submit is triggered!');
});