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 未从iframe中的输入字段激发onChanged事件_Javascript_Iframe_Dom Events_Onchange - Fatal编程技术网

Javascript 未从iframe中的输入字段激发onChanged事件

Javascript 未从iframe中的输入字段激发onChanged事件,javascript,iframe,dom-events,onchange,Javascript,Iframe,Dom Events,Onchange,我有一个表单,它通过监听所有表单字段的onChange事件来跟踪它的脏状态。如果表单变脏,则当用户尝试离开页面或尝试选择其他项目时,会警告用户未保存的更改 这与普通页面中的表单很好地配合 此表单也在iframe中使用。当更改第一个输入字段的值,然后跳转到表单中的另一个字段时,将按预期触发onChange事件,并将表单设置为脏。但是,如果只更改了一个输入字段,并且单击了iframe之外的任意位置,则不会触发更改的输入字段的onChange事件。当iframe失去焦点时,似乎输入字段并没有真正失去焦

我有一个表单,它通过监听所有表单字段的onChange事件来跟踪它的脏状态。如果表单变脏,则当用户尝试离开页面或尝试选择其他项目时,会警告用户未保存的更改

这与普通页面中的表单很好地配合

此表单也在iframe中使用。当更改第一个输入字段的值,然后跳转到表单中的另一个字段时,将按预期触发onChange事件,并将表单设置为脏。但是,如果只更改了一个输入字段,并且单击了iframe之外的任意位置,则不会触发更改的输入字段的onChange事件。当iframe失去焦点时,似乎输入字段并没有真正失去焦点


如何确保在iframe外部单击时触发onChange事件?

您可能需要检查iframe的window.blur事件是否已触发,然后检查是否使用JS触发onChange事件


你能提供你的代码吗?你有没有尝试在iframe中为click事件创建一个监听器,在输入中创建另一个监听器。在输入事件回调中,只需调用stopPropagation。所以现在你可以检测到在输入上的点击,聚焦,点击,这是一个时间问题。在iframe外部单击时,iframe会被外部帧更新,iframe内部的脏表单会消失,而没有足够的时间引发onchange事件。当我将更新iframe的调用放在setTimeout中并仅在300ms后运行它时,表单有足够的时间触发onchange事件并将表单设置为dirty。我是否有可能确定何时可以更新iframe,以便表单元素有足够的时间触发任何onchange事件?这是否回答了您的问题?