我正在尝试通过单击按预期工作的按钮将行添加到我的引导表。新行中的每个单元格都包含文本框。现在我想要带有带有选项的选择框的单元格。
为了动态添加行,我使用了以下 js 函数:
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip();
var actions = $("table td:last-child").html();
// Append table with add row form on add new button click
$(".add-new").click(function(){
$(this).attr("disabled", "disabled");
var index = $("table tbody tr:last-child").index();
var row = '<tr>' +
'<td><input type="text" class="form-control" name="name" id="name"></td>' +
'<td><input type="text" class="form-control" name="department" id="department"></td>' +
'<td><input type="text" class="form-control" name="phone" id="phone"></td>' +
'<td>' + actions + '</td>' +
'</tr>';
$("table").append(row);
$("table tbody tr").eq(index + 1).find(".add, .edit").toggle();
$('[data-toggle="tooltip"]').tooltip();
});
// Add row on add button click
$(document).on("click", ".add", function(){
var empty = false;
var input = $(this).parents("tr").find('input[type="text"]');
input.each(function(){
if(!$(this).val()){
$(this).addClass("error");
empty = true;
} else{
$(this).removeClass("error");
}
});
$(this).parents("tr").find(".error").first().focus();
if(!empty){
input.each(function(){
$(this).parent("td").html($(this).val());
});
$(this).parents("tr").find(".add, .edit").toggle();
$(".add-new").removeAttr("disabled");
}
});
// Edit row on edit button click
$(document).on("click", ".edit", function(){
$(this).parents("tr").find("td:not(:last-child)").each(function(){
$(this).html('<input type="text" class="form-control" value="' + $(this).text() + '">');
});
$(this).parents("tr").find(".add, .edit").toggle();
$(".add-new").attr("disabled", "disabled");
});
// Delete row on delete button click
$(document).on("click", ".delete", function(){
$(this).parents("tr").remove();
$(".add-new").removeAttr("disabled");
});
});
现在我想在部门的情况下允许用户选择: 所以我更换了:
'<td><input type="text" class="form-control" name="department" id="department"></td>'
具有以下内容:
'<td><select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select></td>'
但是它不能正常工作。对于选择除文本以外的其他表单字段,有什么建议吗?
最佳答案
你需要关闭字符串(单引号),这里是示例代码希望你明白了。
也许您可以尝试使用 Handlebars 或 mustache ,这样会使您的代码更易于阅读。
var row = '<tr>';
row += '<td><input type="text" class="form-control" name="name" id="name"></td>';
row += '<td>';
row += '<select>';
row += '<option value="volvo"> Volvo</option>';
row += '<option value="saab">Saab</option>';
row += '<option value="mercedes">Mercedes</option>';
row += '<option value="audi">Audi</option>';
row += '</select>';
row += '</td>';
row += '<td><input type="text" class="form-control" name="phone" id="phone"></td>';
row += '<td>' + actions + '</td>';
row += '</tr>';
关于javascript - 通过 JS 函数在选择选项中使用单元格添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57374093/