【问题标题】:Javascript form submit: Object doesn't support this property or method (IE7)Javascript 表单提交:对象不支持此属性或方法 (IE7)
【发布时间】:2008-11-05 21:34:17
【问题描述】:

我正在尝试使用 javascript 提交表单。 Firefox 工作正常,但 IE 在此函数的提交行上抱怨“对象不支持此属性或方法”:

function submitPGV(formName, action)
{
    var gvString = "";

    pgVisibilities.each(function(pair) {
        gvString += pair.key + ":" + pair.value + ",";
    });

    $('pgv_input').value = gvString;

    var form = $(formName);
    form.action = action;
    form.submit();
}

在这里调用:

<a href="javascript:submitPGV('ProductGroupVisibility','config/productgroupvis/save')">

这是表格:

<form id="ProductGroupVisibility" action="save" method="post">
    <input type="hidden" name="ows_gv..PGV" id="pgv_input" value=""/>
</form>

有什么想法吗?

【问题讨论】:

    标签: javascript internet-explorer


    【解决方案1】:

    您的&lt;input type="submit"&gt; 有什么name

    如果您将其命名为“提交”,则您已经覆盖了 form.submit() 函数,这与名为“foo”的输入生成 form.foo 属性的方式非常相似。这可以解释这种行为。

    【讨论】:

    • 我没有提交类型的输入。这只是使用 javascript 提交的一个隐藏字段。
    • 天哪,我刚刚被这个问题绊倒了,Tomalak。我欠你一杯啤酒;-)
    • 这里也一样。这是 SO 的小宝石之一。 :)
    • 只需添加一点,也不要设置 id,将提交方法设置为 dom 元素会造成同样的损害。
    【解决方案2】:

    尝试检查 IE 选择的元素的类型:

    // For getting element with id you must use # 
    alert( typeof( $( '#ProductGroupVisibility' )));
    

    页面上可能还有其他内容,IE 在表单之前选择了该 ID。

    【讨论】:

    • 是的。我是个白痴。有一个 id="productGroupVisibility" 的表格,Firefox 获得了表格,IE 获得了表格。我确定我已经尝试过更改那张桌子上的 id,但我不是键盘上的那个,所以谁知道发生了什么。谢谢大佬。
    • 没问题。自己做过不止一次;)
    • 只是想添加一些我刚刚看到的做同样事情的东西。不同的情况,但相同的症状。可能会帮助偶然发现此答案的人。 “电子邮件 = $('#UserEmail');”没有重复的 id,但 IE 不喜欢该电子邮件没有正式声明。更改为:“var email = $('#UserEmail');”修复问题。这是更正确的,我想当你习惯在更宽松的环境中编程时会发生这种情况。 :)
    • 这个技巧非常宝贵。修复了我也遇到的一个问题。
    【解决方案3】:

    注意表单中带有 name='submit' 的任何输入,它们会破坏 javascript .submit() 功能!

    【讨论】:

      【解决方案4】:

      您使用的是什么 JavaScript 框架?如果是 jQuery,我认为您需要将 # 添加到您的 id:

      $('#ProductGroupVisibility').submit();
      

      【讨论】:

      • 取决于框架和选择的插件。开箱即用的 mootools 选择(至少 v1.11 做到了)基于 id 和 Kenny 描述的语法。
      • 是的,我意识到在发布并编辑我的答案以指定 jQuery 之后。 :)
      • 哦,这是原型。对不起,我忘了提。
      【解决方案5】:

      你确定你的 JavaScript 库已经加载了吗? (jQuery 或原型)

      它在带有 Prototype 的 IE7 中为我工作。

      试试:

      alert($('ProductGroupVisibility').id)
      

      查看是否有错误。

      【讨论】:

      • 你说得对,如果我把它放到一个只有上面列出的代码的虚拟页面中,它对我有用。它必须是关于页面的其他内容。我会用更多信息修改我的问题。感谢您的帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-05
      • 1970-01-01
      • 2015-07-02
      • 2019-04-09
      • 2013-03-23
      • 1970-01-01
      相关资源
      最近更新 更多