javascript - 通过 JS 函数在选择选项中使用单元格添加行

标签 javascript html bootstrap-4

我正在尝试通过单击按预期工作的按钮将行添加到我的引导表。新行中的每个单元格都包含文本框。现在我想要带有带有选项的选择框的单元格。

为了动态添加行,我使用了以下 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/

相关文章:

javascript - 自动表单字段

javascript - jquery Post 仅在我页面的这一部分不工作

javascript - Canvas FPS 人为限制为 100fps?

javascript - 使用本地存储在 bootstrap 4 中保持页面刷新的事件选项卡?

javascript - Instafeed JS 未加载

javascript - 无法让我的 if else 语句逻辑工作

javascript - 数组的动态数组

html - 在 HTML/CSS 中强制 2 个表到同一行

reactjs - 仅从 Bootstrap 导入网格系统以进行 react

javascript - 如何从 PHP 验证动态单选按钮