在没有其他提交输入的动态CREATED表单中,Firefox中的“提交不是函数”错误

时间:2011-08-10 15:08:48

标签: javascript html forms internet-explorer-9 firefox-5

在Firefox 5的错误控制台中(但不是在IE 9中)当我调用以下javascript函数(在外部脚本文件中)时,我收到错误“myForm.submit不是函数”:

function go(url_go, arr_POST_vars, str_method) {
  var str_method = str_method || "POST";    // by default uses POST
  var myForm = document.createElement("form_redir");
  myForm.setAttribute("method", str_method);
  myForm.setAttribute("action", url_go);
  for (var key in arr_POST_vars) {
    var myInput = document.createElement("input");
    myInput.setAttribute("name", key);
    myInput.setAttribute("type", "hidden");
    myInput.setAttribute("value", arr_POST_vars[key]);
    myForm.appendChild(myInput);
  }
  document.body.appendChild(myForm);
  myForm.submit();
}

我页面上唯一的HTML(HTML正文标记之间)是以下行:

<button type='button' onClick='javascript:go("http://www.testsite.com/login.php", {userCode:"2487",password:"jon123"}, "POST");'>Go!</button>

我已广泛使用Google搜索,并且我知道当存在一个名为“submit”的表单输入时会发生此错误,然后该表单输入与表单的“submit()”函数名称冲突。然而,这不是这种情况。

这里的想法是通过动态创建表单,在单击按钮时导航并将POST值提交到特定URL。它在IE中运行良好,但不适用于Firefox。

我很茫然,我们将非常感谢您的解决方案。

1 个答案:

答案 0 :(得分:4)

它是由您创建的元素类型引起的。 “form_redir”不是有效的html标记,因此它创建了一个元素,但它只有默认的dom方法。将其更改为“表单”,它将起作用。