Javascript表单提交:对象不支持此属性或方法(IE7)

Ken*_*nny 5 javascript internet-explorer

我正在尝试使用javascript提交表单.Firefox工作正常,但IE在这个函数的提交行上抱怨"Object不支持这个属性或方法":

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();
}
Run Code Online (Sandbox Code Playgroud)

叫这里:

<a href="javascript:submitPGV('ProductGroupVisibility','config/productgroupvis/save')">
Run Code Online (Sandbox Code Playgroud)

这是表格:

<form id="ProductGroupVisibility" action="save" method="post">
    <input type="hidden" name="ows_gv..PGV" id="pgv_input" value=""/>
</form>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Tom*_*lak 14

什么name<input type="submit">呢?

如果你将其命名为"submit",那么你已经覆盖了该form.submit()函数,就像一个名为"foo"的输入会生成一个form.foo属性一样.这可以解释这种行为.

  • 只需添加一点,不要设置id,这将设置相同的损坏设置提交方法到dom元素. (2认同)

Bri*_*ian 5

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

// For getting element with id you must use # 
alert( typeof( $( '#ProductGroupVisibility' )));
Run Code Online (Sandbox Code Playgroud)

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

  • 只是想添加一些我刚才看到的东西也是如此.不同的情况,但相同的症状.可能会帮助那些偶然发现这个答案的人."email = $('#UserEmail');" 没有重复的ID,但IE不喜欢该电子邮件未正式声明.更改为:"var email = $('#UserEmail');" 解决了这个问题.这更正确,我想当你习惯在更宽松的环境中编程时会发生什么.:) (2认同)