【问题标题】:Hide the button in first record only - laravel仅在第一条记录中隐藏按钮 - laravel
【发布时间】:2018-12-12 12:26:02
【问题描述】:

我的操作栏中有 3 个按钮。在检查系统中的用户角色(如果是管理员或用户)后,我想隐藏这两个按钮并留下另一个按钮。我的问题是我只能隐藏我拥有的第一条记录中的两个按钮。其余的还是一样的。我该如何解决这个问题?

这是我在 javascript 中的函数

function load_datatable(id){

            var flag_color;
            $.ajax({
                url: "loadInquiriesData",
                type: "POST",
                headers: {'X-CSRF-TOKEN':$('meta[name="csrf-token"]').attr('content')},
                dataType: "JSON",
                success:function(data){
                inquire_t.dataTable().fnClearTable();
                $.each(data,function(key,value){
                    switch(value.flag){
                        case 'Forwarded as Direct Inquiry': flag_color = '#0000ff'; break;
                        case 'New': flag_color = '#0000ff'; break;
                        case 'Open': flag_color = '#000000'; break;
                        case 'On-Hold': flag_color = '#ff0000'; break;
                        case 'Attended': flag_color = '#27ae60'; break;
                        case 'Closed': flag_color = '#000000'; break;
                        case 'Pending': flag_color = '#ff0000'; break;
                    }
                    inquire_t.dataTable().fnAddData([
                        value.refNumber,
                        value.client,
                        value.details,
                        value.dateCreated,
                        value.reply,
                        value.acknowledgeBy,
                        value.category,
                        "<font color='"+flag_color+"'><strong>"+value.flag+"</strong></font>",
                        "<button class='btn btn-warning btn-xs' id='openbtn' value='"+value.refNumber+"'name='"+value.flag+"'> <span class='fa fa-eye' data-toggle='tooltip' data-placement='bottom' title='Open Ticket'></span></button>"+
                        " <button class='btn btn-danger btn-xs' id='btn-close' value='"+value.refNumber+"' name='"+value.flag+"'> <span class='fa fa-close' data-toggle='tooltip' data-placement='bottom' title='Close Ticket'></span></button>"+
                        "<button class='btn btn-primary btn-xs glyphicon glyphicon-envelope' data-toggle ='modal' data-target='#threadmessage'></button>"
                        // " href='message/thread'
                        // 
                    ]);//datatable
                });//each

                //update_datatable();
                }//success
            });//ajax

            //get role
            //console.log(id);
            $.ajax({
                url: 'getUserRoles',
                type: 'POST',
                headers: {"X-CSRF-TOKEN": $("meta[name='csrf-token']").attr("content")},
                data: id,
                dataType: 'JSON',
                success: function(role){
                    $.each(role, function(key, value){
                        var hasRole = value.hasRole;
                        // console.log(role);
                        if (hasRole == 'BSI') {
                            var hidden = false;
                            document.getElementById('openbtn').style.visibility = 'hidden';
                            document.getElementById('btn-close').style.visibility = 'hidden';
                        }else{
                            //console.log('with action');
                            // Get the column API object - get Action column
                            var column = table.columns(8);
                            // Toggle the visibility - show Action column for admin
                            column.visible(column.visible());
                        }//else
                    });//each
                }//success
            });//ajax 
        }// load_datatable

【问题讨论】:

    标签: javascript laravel


    【解决方案1】:

    您使用的 ID 属性在整个文档中应该是唯一的。尝试使用 Class 属性,一切都会好起来的。

    <button class='btn btn-warning btn-xs openbtn'...
    <button class='btn btn-danger btn-xs btn-close'...
    

    还有:

    $('.openbtn, .btn-close').hide();
    

    如果你想使用 vanilla javascript:

    Array.prototype.forEach.call(document.getElementsByClassName('openbtn'), function(el) {
        el.style.visibility = 'hidden';
    });
    

    希望这会有所帮助。 详情请查看this

    【讨论】:

    • 您好 Nghia Dau 感谢您的回答。我做了你告诉我的,但是这个错误发生了 Uncaught TypeError: Cannot read property 'style' of null at Object. (showInquiries:628) at Function.each (jquery.min.js:2) at Object.success ( showInquiries:616) at u (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at k (jquery.min.js:2) at XMLHttpRequest. ( jquery.min.js:2)
    • 非常感谢 Nghia Dau。它现在终于可以工作了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多