简体   繁体   English

动态添加/删除表单字段

[英]Dynamically add/remove form fields

I'm trying to add, and hopefully remove once adding works, some dimension fields to a form when the user clicks a button to then input into a mysql database, But I am stuck getting anything to display. 我正在尝试添加,并希望在添加作品后删除,当用户单击按钮然后将其输入到mysql数据库中时,会将某些维度字段添加到表单中,但是我一直无法显示任何内容。

Javascript: Javascript:

    var counter = 0;

function moreFields() {
    counter++;
    var newFields = document.getElementById('readroot').cloneNode(true);
    newFields.id = '';
    newFields.style.display = 'block';
    var newField = newFields.childNodes;
    for (var i=0;i<newField.length;i++) {
        var theName = newField[i].name;
        if (theName)
            newField[i].name = theName + counter;
    }
    var insertHere = document.getElementById('writeroot');
    insertHere.parentNode.insertBefore(newFields,insertHere);
}

window.onload = moreFields;

HTML: HTML:

        <div id="readroot" style="display: none">
        <p>Quantity<input type="text" name="iQuantity" size="3">
Weight(kg)<input type="text" name="iWeight"size="4">    Length(cm)<input type="text" name="iLength"size="4"> *  Width(cm)<input type="text" name="iWidth"size="4"> * Height(cm)<input type="text" name="iHeight"size="4"></div>
    <span id="writeroot"></span>

    <input type="button" value="Add another text input" onClick="moreFields();">

Any help is greatly appreciated, thanks 任何帮助,不胜感激,谢谢

Your JavaScript for creating the elements works. 您的JavaScript用于创建元素。 The way your are attaching events could be improved. 您附加事件的方式可以得到改善。 Here is how I would update your JavaScript code: 这是我将如何更新您的JavaScript代码的方法:

var counter = 0;

function moreFields() {
    counter++;
    var newFields = document.getElementById('readroot').cloneNode(true);
    newFields.id = '';
    newFields.style.display = 'block';

    var newField = newFields.childNodes;
    for (var i = 0; i < newField.length; i++) {
        var theName = newField[i].name;
        if (theName) newField[i].name = theName + counter;
    }

    var insertHere = document.getElementById('writeroot');
    insertHere.parentNode.insertBefore(newFields, insertHere);
}

if (window.addEventListener) {
    window.addEventListener('load', moreFields, false);
} else if (window.attachEvent) {
    window.attachEvent('onload', moreFields);
}

var el = document.getElementById('clicker')

if (el.addEventListener) {
    el.addEventListener("click", moreFields, false);
} else {
    el.attachEvent('onclick', moreFields);
}

And your HTML can be improved a lot. 而且您的HTML可以大大改善。 Here I have closed your tags and it is now working. 在这里,我已经关闭了您的标签,现在可以使用了。

<div id="readroot" style="display:none;">
    <p>Quantity
        <input type="text" name="iQuantity" size="3" />Weight(kg)
        <input type="text" name="iWeight" size="4" />Length(cm)
        <input type="text" name="iLength" size="4" />* Width(cm)
        <input type="text" name="iWidth" size="4" />* Height(cm)
        <input type="text" name="iHeight" size="4" />
    </p>
</div>
<div id="writeroot"></div>
<input id="clicker" type="button" value="Add another text input" />

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM