【问题标题】:Dynamically adding two form elements with jQuery使用 jQuery 动态添加两个表单元素
【发布时间】:2010-07-29 17:09:12
【问题描述】:

我试图在用户单击一个按钮时创建两个表单元素,他可以执行 5 次,但我是 jQuery 新手,所以我遇到了问题,

代码如下:

$(document).ready(function() {
    $('#btnAdd').click(function() {
        var num     = $('.clonedInput').length; 
        var numTwo     = $('.clonedInputTwo').length; 
        var newNum  = new Number(num + 1);      

        var newElem = $('#input' + num).clone().attr('id', 'input' + newNum);
        var newElemTwo = $('#inputTwo' + numTwo).clone().attr('id', 'input' + newNum);


        newElem.children(':first').attr('id', 'name' + newNum).attr('name', 'name' + newNum);
        newElemTwo.children(':first').attr('id', 'name' + newNum).attr('name', 'name' + newNum);


        $('#input' + num).after(newElem);
        $('#inputTwo' + numTwo).after(newElemTwo);

        $('#btnDel').attr('disabled','');

        if (newNum == 5)
            $('#btnAdd').attr('disabled','disabled');
    });

        $('#btnDel').click(function() {
            var num = $('.clonedInput').length; // how many "duplicatable" input fields we currently have
            $('#input' + num).remove();     // remove the last element
            $('#inputTwo' + num).remove();     // remove the last element

            // enable the "add" button
            $('#btnAdd').attr('disabled','');

            // if only one element remains, disable the "remove" button
            if (num-1 == 1)
                $('#btnDel').attr('disabled','disabled');
        });

        $('#btnDel').attr('disabled','disabled');
    });

HTML:

<form id='myForm'>
    <div id='input1' style='margin-bottom:4px;' class='clonedInput'>
        Name: <input type='text' name='name1' id='name1' />
    </div>
    <div id='inputTwo1' style='margin-bottom:4px;' class='clonedInputTwo'>
        School: <input type='text' name='nameTwo1' id='nameTwo1' />
    </div>
    <div>
        <input type='button' id='btnAdd' value='add another name' />
        <input type='button' id='btnDel' value='remove name' />
    </div>
</form>

当我点击一次按钮时,它会继续创建名称元素,而不是学校元素!

【问题讨论】:

标签: javascript jquery html


【解决方案1】:
var newElemTwo = $('#inputTwo' + numTwo).clone().attr('id', 'input' + newNum);

应该是

var newElemTwo = $('#inputTwo' + numTwo).clone().attr('id', 'inputTwo' + newNum);

参加look(感谢 MvanGeest)

【讨论】:

  • 谢谢,效果很好!还有一件事,有没有一种方法可以创建元素,使其可以排列为 Name:School:Name:School:Name:School 等?
  • 为什么不将NameSchool 放在div 中,然后克隆div?如果字段只成对出现应该会更容易......而且它会使代码更简洁。
  • +1 为第一,这将您的排名固定在首位(更容易导航)
  • 或者如何在每个元素后添加换行符?
  • 给你:jsfiddle.net/e6cwd/9 还是不是很漂亮,但更好了。您想要一个更灵活、允许更多字段的版本吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 2016-12-19
  • 2015-09-25
相关资源
最近更新 更多