Javascript,添加输入字段到表单。不在IE中工作

时间:2014-01-13 21:05:42

标签: javascript cross-browser appendchild

我从This question

的答案中获得了大部分代码
<script type="text/JavaScript">
  function newInput(NIFormName,NIname,NIvalue,NItype='hidden'){
    var theForm = document.forms[NIFormName];
    var input = document.createElement('input');
    input.type = NItype;
    input.name = NIname;
    input.value = NIvalue;
    theForm.appendChild(input);
    return true;
  }
</script>

这似乎适用于FF但不适用于IE 11.

所以,我做了一个搜索,看起来我需要一个不同的方法,我尝试了:

<script type="text/JavaScript">
  function newInput(NIFormName,NIname,NIvalue,NItype='hidden'){
    var theForm = document.forms[NIFormName];
    var input = document.createElement('input');
    input.setAttribute('type', NItype);
    input.setAttribute('name', NIname);
    input.setAttribute('value', NIvalue);
    theForm.appendChild(input);
    return true;
  }
</script>

它仍可在FF 26中运行,但在IE中不起作用。

当我说“它不起作用”时,我的意思是我看到没有错误,并且该字段未添加到提交的数据中。

这是我表格的顶部:

<form name="writenew" method="get" action="formtest.php" onSubmit="newInput('writenew','first_added_field','Yep! I was added.');"> 

这是formtest.php

<?php
  var_export($_GET);
?>

当我用FF提交时,它包含在显示器中

  

'first_added_field'=&gt; “是的!我加入了。',

但在IE中并非如此。

如何在IE中完成这项工作?

1 个答案:

答案 0 :(得分:2)

Javascript不支持NItype='hidden'等参数默认值。它只是一个firefox功能。见here。尝试仅使用NItype,然后在函数内部检查未定义。这是一个example