2012-10-17 41 views
0

我有一个表单通过监听其所有表单字段的onChange事件来跟踪其脏状态。如果表单很脏,则当用户尝试离开页面或尝试选择其他项目时,会向用户发送未保存的更改的警告。onFhanged事件没有从iframe中的输入字段中触发

这适用于“正常页面”中的表单。

此表单也用于iframe中。当更改第一个输入字段的值,然后跳转到表单中的另一个字段时,onChange even将按预期方式触发,并将表单设置为dirty。但是,如果只更改一个输入字段并单击iframe外部的任意位置,则更改的输入字段的onChange事件是而不是已触发。看起来好像输入字段并没有真正失去焦点,当iframe丢失时。

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

+0

请您提供您的件代码? –

+0

您是否尝试为iframe中的click事件添加侦听器,并在输入上添加另一个侦听器。在输入事件回调中,只需调用stopPropagation。因此,现在您可以检测输入(焦点)上的点击,然后单击外部(模糊) – JuSchz

+0

这是一个计时问题。当在iframe外部单击时,iframe会被外框更新,iframe中的“脏表单”将消失,但没有足够的时间来提升onchange事件。当我把这个调用更新了setTimeout中的iframe并且只在300ms后运行它时,表单有足够的时间来触发onchange事件并将表单设置为dirty。 我是否有机会确定何时可以更新iframe,以便表单元素有足够的时间触发任何onchange事件? – James

回答