【发布时间】:2010-01-13 08:58:29
【问题描述】:
在我的 cms 中,我有一个用于类别的复选框组。我想在下面有一个文本输入,用户可以在其中输入新类别的名称,它将动态添加一个新复选框,其中提供的名称用于值和标签。
我该怎么做?
【问题讨论】:
在我的 cms 中,我有一个用于类别的复选框组。我想在下面有一个文本输入,用户可以在其中输入新类别的名称,它将动态添加一个新复选框,其中提供的名称用于值和标签。
我该怎么做?
【问题讨论】:
<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>
【讨论】:
name 我没有。
var formCheck = $('<div/>', { 'class': 'form-check' }).appendTo(container);,然后将输入上的附加目标和标签从container 更改为formCheck。请注意,您需要在 class 周围加上引号,因为 class 是 javascript 中的保留关键字。
在设计界面时要考虑的一个因素是,新的复选框最终会被添加到什么事件(当 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 事件并操作 DOM。
$('#addCheckbox').click(function() {
var text = $('#newCheckText').val();
$('#checkboxes').append('<input type="checkbox" /> ' + text + '<br />');
});
【讨论】:
value属性
放一个全局变量来生成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>
【讨论】: