代码之家  ›  专栏  ›  技术社区  ›  Martin Reeves

使用JQuery从文本输入动态创建复选框

  •  29
  • Martin Reeves  · 技术社区  · 16 年前

    在我的cms中,我有一个类别复选框组。我想有一个文本输入下面,用户可以输入一个新类别的名称,它将动态添加一个新的复选框与提供的名称都用于价值和标签。

    我该怎么做?

    3 回复  |  直到 16 年前
        1
  •  84
  •   David Hedlund    13 年前
    <div id="cblist">
        <input type="checkbox" value="first checkbox" id="cb1" /> <label for="cb1">first checkbox</label>
    </div>
    
    <input type="text" id="txtName" />
    <input type="button" value="ok" id="btnSave" />
    
    <script type="text/javascript">
    $(document).ready(function() {
        $('#btnSave').click(function() {
            addCheckbox($('#txtName').val());
        });
    });
    
    function addCheckbox(name) {
       var container = $('#cblist');
       var inputs = container.find('input');
       var id = inputs.length+1;
    
       $('<input />', { type: 'checkbox', id: 'cb'+id, value: name }).appendTo(container);
       $('<label />', { 'for': 'cb'+id, text: name }).appendTo(container);
    }
    </script>
    
        2
  •  8
  •   T. Stone    16 年前

    当你设计你的界面时要考虑的因素之一是什么事件(当A发生,B发生……)新的复选框最终被添加了吗?

    假设文本框旁边有一个按钮。单击按钮时,文本框的值将变成一个新的复选框。我们的标记可能类似于以下内容。。。

    <div id="checkboxes">
        <input type="checkbox" /> Some label<br />
        <input type="checkbox" /> Some other label<br />
    </div>
    
    <input type="text" id="newCheckText" /> <button id="addCheckbox">Add Checkbox</button>
    

    基于此标记,jquery可以绑定到 click

    $('#addCheckbox').click(function() {
        var text = $('#newCheckText').val();
        $('#checkboxes').append('<input type="checkbox" /> ' + text + '<br />');
    });
    
        3
  •  4
  •   rahul    16 年前

    放置一个全局变量以生成ID。

    <script>
        $(function(){
            // Variable to get ids for the checkboxes
            var idCounter=1;
            $("#btn1").click(function(){
                var val = $("#txtAdd").val();
                $("#divContainer").append ( "<label for='chk_" + idCounter + "'>" + val + "</label><input id='chk_" + idCounter + "' type='checkbox' value='" + val + "' />" );
                idCounter ++;
            });
        });
    </script>
    <div id='divContainer'></div>
    <input type="text" id="txtAdd" /> 
    <button id="btn1">Click</button>