是否有另一种方法可以创建具有不同ID的类似表单?

时间:2015-11-01 02:31:17

标签: javascript jquery

基本上我想复制表单,但我希望它们具有不同的ID。我还将使用在表单中输入的值,因此它们的ID必须或多或少相似。因此,一个表单的id为“formA”,下一个表单为“formB”。我的同事建议在IDS附加一个int值。这就是我所做的

var FormCounter = 1;

function addForms() {

    // When the element '#addForm' is clicked then the forms are appended to the formContainer div

    $("#addForm").click(function() {

         /* 
            Note: you can add as many forms as you want and each will have a different ID.
            Each ID will be unique as each ends with a different Integer.
        */

        var formTitle = "<p> Form " + formCounter + "</p>";

        // declare your form types here
        var formType = "<input type='textField' id='textField" + formCounter + "'</input>";

        // append to the formContainer div 
        $("#formContainer").append(formTitle);

        // create a form tag
        $("#formContainer").append("<form>");

        /* 

                INSERT FORMS HERE


        */

        $("#formContainer").append(formType);


        // close form tag
        $("#formContainer").append("</form>");

        // insert a horizontal line
        $("#formContainer").append("<hr>");

        ++formCounter;
    }); 
}

我目前在一个文本字段中使用此代码。有没有其他方法这样做?我想要做的是获取在字段中输入的值,然后将它们显示在表格上。

2 个答案:

答案 0 :(得分:0)

如果你想复制它们,你可以使用jquery来获取表单,然后通过每个子进行迭代,在相同的特性上创建一个新元素,但最后使用下划线uniq id建议更改id。希望它有所帮助

答案 1 :(得分:0)

在此JSFiddle中,它会简要地显示hwo添加更多表单,每个表单都有唯一的id - 作为您的同事建议 - 同时将计数器值分配给输入和按钮相应的形式,然后增加计数器

var formCounter = 1;

$('#btn').on('click', function(){
	$('#formContainer').append('<p>form:' + formCounter + '<form id="f-'+formCounter+'"><input type="text" id="t-'+formCounter+'"><input type="submit" id="s-'+formCounter+'"></form></p>');
++formCounter;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<button id="btn">Add a New Form</button>
<div id="formContainer"></div>

更新: 当您要求使用其他方法时,此代码使用原始javascript,而不是像上面一样在一个附加行中注入HTML代码,在这里我们创建每个DOM元素并设置其ID并将其子项附加到它,如JSFiddle

var i = 0, form, labelText, inputText, inputSubmit, btn = document.getElementById("btn");

btn.addEventListener('mouseup', function () {
    i++;
    form = document.createElement('form');
    form.id = 'form' + i;
    labelText = document.createElement('label');
    labelText.innerHTML = 'form ' + i + ': ';
    form.appendChild(labelText);
    inputText = document.createElement('input');
    inputText.setAttribute("type", "text");
    inputText.id = 'text' + i;
    form.appendChild(inputText);
    inputSubmit = document.createElement('input');
    inputSubmit.setAttribute('type', 'submit');
    inputSubmit.id = 'sudmit' + i;
    form.appendChild(inputSubmit);
    document.getElementById("formContainer").appendChild(form);
});
form {
    margin:5px;
}
<button id="btn">Add a New Form</button>
<div id="formContainer"></div>