【问题标题】:How to pass row id into a functon onclick button, bootstrap table如何将行 ID 传递给函数 onclick 按钮、引导表
【发布时间】:2020-10-23 20:01:01
【问题描述】:

我正在使用 bootstrap 4 并尝试使用删除/编辑按钮构建引导表。我使用 ajax 将数据加载到表中。我的问题是,当我单击删除或编辑按钮时,它不会通过行 id(row.id) 来运行。我用警报测试它并显示“未定义”。我以前用于另一个引导表的相同代码,它工作正常。我在这里看不到任何错误,但它不起作用。期待您的帮助。

HTML:

<table class="table table-striped table-hover" id="expenseTable"      
       data-search="true"
       data-pagination="true">
     <thead class="table-light">
         <tr>
            <th scope="col" data-feild="id" data-sortable="true">Id</th>
            <th scope="col" data-feild="user" data-sortable="true">User</th>
            <th scope="col" data-feild="category" data-sortable="true">Category</th>
            <th scope="col" data-feild="source" data-sortable="true">Source</th>
            <th scope="col" data-feild="description" data-sortable="true">Description</th>
            <th scope="col" data-feild="amount" data-sortable="true">Amount</th>
            <th scope="col" data-feild="date" data-sortable="true">Date</th>
            <th>Action</th>
        </tr>
    </thead>
    <tbody id="expenseTblBdy">
                                                
    </tbody>
</table>

JavaScript:

$(document).ready(function() {

    load();

    function loadExpenseData(data){
         $(function() {
             $('#expenseTable').bootstrapTable({
                  data: data,
                  columns: [ {},{},{},{},{},{},{},  
                  {
                    field: 'operate',
                    title: 'Action',
                    align: 'center',
                    valign: 'middle',
                    clickToSelect: false,
                    formatter : function(value,row,index) {
    
                         return '<button class=\'btn btn-primary btn-sm btnExp-up\' pageName="'+row.id+'" pageDetails="'+row.user+'">Update</button> <button class=\'btn btn-danger btn-sm btnExp-del\' pageName="'+row.id+'">Dalete</button>';
                          }
                        }
                      ]              
                });
    
    
                $(".btnExp-up").click(function(e){
                    
                    var expId = $(this).attr('pageName');
                    alert(expId);
    
                    //modifyExp(expId);
                    // $("#mdlOutsideUpdate").modal("show");
    
                     e.stopPropagation();
                });
    
                $(".btnExp-del").click(function(e){
                    
                    var expId = $(this).attr('pageName');
    
                    removeExp(expId);
                    e.stopPropagation();
                    
                });
    
            });
        }

});

load 函数的作用是使用 ajax 将数据加载到表中,它工作正常。

【问题讨论】:

    标签: javascript jquery bootstrap-4 bootstrap-table


    【解决方案1】:

    尝试将pageNamepageDetails 转换为data-* 属性。返回函数看起来像

    return 
    `
       <button class="btn btn-primary btn-sm btnExp-up" data-pageName="${row.id}" data-pageDetails="${row.user}> 
         Update
       </button>
       <button class="btn btn-danger btn-sm btnExp-del" data-pageName="${row.id}">
         Delete
       </button>
    `;
    

    然后在按钮单击事件中,您可以访问数据值,例如

    var expId = $(this).data('pageName');
    

    注意:我没有尝试过,但我希望它有效。

    【讨论】:

    • 我试过你提到的但没有奏效。无论如何,我非常感谢您的帮助。
    • 您在点击按钮之前或之后是否在浏览器控制台中看到任何错误?
    • 我真的很抱歉回复晚了,通过更改用于存储“id”的数据库列名称修复了错误。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多