使用JS的多个输入字段

时间:2013-11-21 17:28:55

标签: javascript field

获得以下JS代码:

<script language="javascript">
fields = 0;
pNR = 0;
err = 0;

function addInput() {
    if (fields != 40) {
        document.getElementById('text').innerHTML += "<input type='text' name='first" + pNR + "' value='' /><input type='text' name='second" + pNR + "' value='' /><br />";
        fields += 1;
        pNR += 1;
    } else {
        if (err == 0) {
            document.getElementById('text').innerHTML += "<br />Adaugati maxim 40 ingrediente.";
            err = 1;
        }
        document.form.add.disabled = true;
    }
}
</script>

以及以下HTML:

<input name="name" style="color:#ffffff;" class="name required" type="button" onclick="addInput()" value="Add" />   

<div id="text">
</div>

默认情况下,没有字段。当我按下“添加”按钮(两个字段以不同的名称添加两个字段)时,填写字段并再次单击“添加”按钮,填充的字段将被清空。我做错了什么?

1 个答案:

答案 0 :(得分:2)

您不只是添加新输入。

你是:

  • 将现有的转换为HTML(值属性未更改,它仍将具有默认值,而不是当前值)
  • 为其添加新输入的HTML
  • 从该HTML生成新的DOM元素。

请勿使用innerHTML。使用createElementappendChild和朋友。


这:

document.getElementById('text').innerHTML += "<input type='text' name='first" + pNR + "' value='' /><input type='text' name='second" + pNR + "' value='' /><br />";

成为这个:

var firstInput = document.createElement("input");
var secondInput = document.createElement("input");

firstInput.type = secondInput.type = "text";
firstInput.name = "first" + pNR;
secondInput.name = "second" + pNR;

var text = document.getElementById("text");
text.appendChild(firstInput);
text.appendChild(secondInput);
text.appendChild(document.createElement("br"));

并且,对于else案例:

var text = document.getElementById("text");
text.appendChild(document.createElement("br"))
text.appendChild(document.createTextNode("Adaugati maxim 40 ingrediente."));

工作示例:http://jsbin.com/OqIWeMum/2/edit