【问题标题】:JQuery Dialog IE issueJQuery 对话框 IE 问题
【发布时间】:2013-06-10 17:38:09
【问题描述】:

JSFiddle

请查看上面的JSFiddle链接以获取运行代码。

我在 IE 的 JQuery 对话框中遇到问题。

我的猜测是问题出在多个 formsdivs 上。 我的代码如下:

<div>
     <form>
           <table> ..... </table>

           <div id='dialog-form'>
             <form> </form>
           </div>

            <div>
                <table> .... </table>
            </div>
      </form>
</div>

JSFiddle 代码在 Firefox 和 Chrome 中运行良好。 但它在IE中显示错误

Message: cannot call methods on dialog prior to initialization; attempted to call method 'open'

任何帮助表示赞赏。谢谢。

【问题讨论】:

  • 查看您的代码,我看不到任何可能导致上述错误的内容,除非您在某个时候删除了对话框的 div,或者当您第一次初始化它时它不存在.
  • 检查 IE 中的 JSFiddle 链接
  • 它适用于 IE10,而不是 IE9。
  • 您有重复的 ID。 jsfiddle.net/MzA4q/5 或者更准确地说,是否存在重复的 id,无论您是否创建了它,我还不知道。

标签: jquery internet-explorer dialog


【解决方案1】:

为什么有嵌套表单?这不是合法的 HTML,甚至没有意义。弄清楚如何删除嵌套表单,您的代码将正常工作。

为什么不试试下面的呢?

<div>
     <form>
           <table> ..... </table>
            <div>
                <table> .... </table>
            </div>
      </form>
</div>
<div id='dialog-form'>
    <form> </form>
</div>

【讨论】:

  • 我很确定嵌套表单在 HTML5 中是合法的,但这不是重点。一旦对话框被初始化,它实际上不会在另一个窗体内,因为 jQuery 将它移动到正文。
  • @KevinB - 没有 HTML5 不允许嵌套表单,但它确实具有一些新功能,使这种“限制”更容易处理。见这里:stackoverflow.com/a/8380229/52551 即使 jQuery 将表单移到其他地方,IE 的 DOM 也会因为嵌套表单的存在而转向,这会导致未记录的行为。
  • @user2414851 - 这应该很容易排除故障。
  • @SpencerRuport 你是对的......不知道我从哪里找到的,我记得是从规范中读到的。 w3.org/TR/html5/forms.html#the-form-element
  • @SpencerRuport - 感谢您帮助解决此问题。我是 JQuery 的新手,我尝试使用此代码更新教程。需要让它在 IE 9 中工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多