[英]How to add checkboxes dynamically using javascript?
我使用Bootstrap並具有一個帶有2個文本字段和2個復選框的表單。 使用添加按鈕,我想添加(每次單擊)帶有復選框的其他文本字段。 目前,我正在使用此JS:
$("#addButton").click(function () {
var newTextBoxDiv = $(document.createElement('div'))
.attr("id", 'TextBoxDiv' + counter);
/* TODO: patterns festlegen */
newTextBoxDiv.after().html('<div class="form-group label-floating">' +
'<label class="control-label">Answer' + counter + '</label>' +
'<input type="text" class="form-control"/>' +
'</div><div class="togglebutton"><label><input type="checkbox" checked="">Toggle is on</input></label></div>');
newTextBoxDiv.appendTo("#AnswerGroup");
counter++;
});
它成功添加了文本字段,但未顯示該復選框,僅顯示了文本“ Toggle on”。
我該如何解決? 我將JS插入$(document).ready(function () {
。
編輯我認為CSS會引起問題。 當我簡單地添加'</div><input type="checkbox" checked=""/></div>'
,它僅顯示不帶UI的復選框。 添加其余部分(如class =“ togglebutton”)后,我什么也看不到。
您的復選框的標記不正確:
<label><input type="checkbox" checked="">Toggle is on</input></label>
應該
<label><input type="checkbox" checked="" />Toggle is on</label>
可能是因為輸入標簽沒有閉合對。
嘗試
'<input type="checkbox" checked="">'
並且必須具有“名稱”屬性
測試答案
<html>
<head>
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$( document ).ready(function() {
$("#addButton").click(function () {
var counter = 2; //for sample
var newTextBoxDiv = $(document.createElement('div'))
.attr("id", 'TextBoxDiv' + counter);
/* TODO: patterns festlegen */
newTextBoxDiv.after().html('<div class="form-group label-floating">' +
'<label class="control-label">Answer' + counter + '</label>' +
'<input type="text" class="form-control"/>' +
'</div><div class="togglebutton"><label><input type="checkbox" checked="">Toggle is on</input></label></div>');
newTextBoxDiv.appendTo("#AnswerGroup");
counter++;
});
});
</script>
</head>
<body>
<input type="button" id="addButton" value="hello"/>
<div id="AnswerGroup"> </div>
</body>
</html>
首先,代替$("#addButton").click(function () {
養成$("#addButton").on('click', function () {
的習慣,您將有更多控制權將來的事件監聽器。
接下來, var newTextBoxDiv = $(document.createElement('div')).attr("id", 'TextBoxDiv' + counter);
應該是var newTextBoxDiv = $('<div/>').prop('id', 'TextBoxDiv' + counter);
。
接下來,您似乎正在創建內容newTextBoxDiv
,然后在其后插入內容。 我不確定您是否要這樣做。 我認為您希望將內容添加到剛創建的框中。 此外,根據.after()
,它接受html作為參數。 我相信您以后再調用.html()
只是設置newTextBoxDiv
的內部HTML。
如您的具體問題; 您應該能夠使用以下語法創建一個復選框: var checkbox = $('<input/>').attr('type', 'checkbox');
要將其設置為選中(或未選中),請使用.prop()
如下所示: checkbox.prop('checked', true); //checks the box.
checkbox.prop('checked', true); //checks the box.
要將其設置為HTML字符串(並進行檢查 ),我相信您應該使用以下語法: <input type="checkbox" checked>
嘗試使用:
newTextBoxDiv.append(...)
代替
newTextBoxDiv.after().html(...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.