2

有人可以帮帮我吗?我正在尝试使用此函数动态创建输入,但未设置“表单”属性

function addInput(parentID,inputNAME) {
    var padre = document.getElementById(parentID);
    var container = document.createElement("input");
    container.type = "text";
    container.name = inputNAME;
    container.value = "";
    container.form = 'extra';
    var enter = document.createElement("br");
    padre.appendChild(container);
    padre.appendChild(enter);
}

我也试过这个:

container.formName = 'extra';
container['form'] = 'extra';
container.attributes['form'] = 'extra';
container.createAttribute('form','extra')

编辑:
答案:
container.setAttribute("Form",'extra');

4

2 回答 2

7

我用过

container.setAttribute("Form",'extra');

它似乎在 FF、Chrome 和 Opera 中工作。

于 2012-07-01T22:58:55.113 回答
2

不知道为什么“我不是”删除他/她的答案,这大多是正确的。form 属性在DOM 2 HTML 规范中指定为只读,并引用表单控件所在的表单。如果它不在表单中,它将是未定义的。

form属性是 HTML5 中的新属性,旨在将控件与与其所在的表单不同的表单相关联。这旨在用于嵌套表单。

在输入元素上设置表单属性可能会产生不可预知的结果。在符合 HTML5 的浏览器中,如果 form 属性的值是文档中另一个表单的 ID,则控件将与该表单关联,因此其 form 属性是对表单的引用,其 form 属性将是一个字符串 (关联表单的 ID)。否则,属性值将不会反映在控件的表单 DOM 属性中,但可能会保持属性值不变。

IE总是把属性和属性搞乱了,IE 6不管怎样都用属性值替换了表单属性。也许更高版本的行为有所不同,也许其中一个支持 HTML5。

以下可能会有所帮助:

<form id="form0">
  <div>
    <input type="button" form="form1" onclick=
      "alert('form property is: ' + this.form + ' ' + this.form.id + 
             '\nform attribute: ' + (typeof this.getAttribute('form')) +
             ' ' + this.getAttribute('form'))
      " value="Show form property  and attribute">
  </div>
</form>
<form id="form1"><div></div></form>
于 2012-07-01T02:07:28.253 回答