jquery - jqGrid/ui-widget-overlay 阻止整个页面上的所有按钮和选项卡事件

标签 jquery jquery-ui jqgrid jquery-ui-dialog jquery-widgets

我正在将 redmond themeroller 与 jqGrid 一起使用。 文件 jquery-ui-1.8.16.custom.css 具有此覆盖层。

/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }

我认为它应该在网格上制作一个覆盖层来进行样式设计。但它似乎覆盖了我的整个页面,虽然网格本身仍然有鼠标事件,但页面的其余部分(包括网格的寻呼机/导航器部分)没有任何鼠标事件,并且按钮没有响应点击次数。网格之外的选项卡 - 也没有单击事件。即使该选项卡之外的选项卡(主要、用户...)也没有事件。如果我注释掉 ui-widget-overlay,那么所有按钮和选项卡都会再次工作,但屏幕的颜色会变浅,并且网格中的交替行颜色每行都变为白色。为什么会出现这种情况?

<link rel="stylesheet" type="text/css" media="screen" href="/plugins/snap/jquery-ui-1.8.16.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="/plugins/snap/jqModal.css" />
<script src="/plugins/snap/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="/plugins/snap/jquery.jqGrid-4.2.0/src/jqModal.js" type="text/javascript"></script>
<script src="/plugins/snap/jquery.jqGrid-4.2.0/js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="/plugins/snap/jquery.jqGrid-4.2.0/js/jquery.jqGrid.min.js" type="text/javascript"></script>
<script src="/plugins/snap/jquery-ui-1.8.16.custom/js/jquery-ui-1.8.16.custom.min.js" type="text/javascript"></script>

<style type="text/css">

</style>

<script type="text/javascript">
$().jquery;

function switch_tabs(obj)
{
    $('.tab-content').hide();
    $('.tabs a').removeClass("selected");
    var id = obj.attr("rel");

    $('#'+id).show();
    obj.addClass("selected");
}

var lastsel_devinfo;
$(document).ready(function() {

    $('.tabs a').click(function(){
        switch_tabs($(this));
    });

    switch_tabs($('.defaulttab'));

//$('#devInfo").jqGrid('navGrid','#pager',{},{zIndex:1234},{zIndex:1234},{zIndex:1234},{multipleSearch:true,overlay:false});
 var initialized = [false, false];

    jQuery("#devinfo").jqGrid({
       url:'/plugins/snap/manageList.php?q=3',
        datatype: "json",
        height: 200,
        altRows:true,
        navigator: true,
        pager: '#pager',
        rowNum: 50,


        colNames:['ID','Managed By', 'Serial Number', 'Share Name', 'Device Name','inode'],
        colModel:[
            {name:'id',index:'id',title:false, width:50, sorttype:"int", editable: false},
            {name:'owner',index:'owner',title:false,align:'center', width:100,editable: false},
            {name:'serial',index:'serial',title:false,align:'right', width:225, editable: true},
            {name:'share',index:'share', title:false,width:225,editable: true,editoptions:{size:15,maxlength:30}},
            {name:'name',index:'name',title:false,align:'center', width:90,editable: false},
            {name:'inode',index:'inode',title:false, width:50,editable: false},
        ],
        afterInsertRow: function(rowid, aData, rowelem)
        {
           if ( aData.share != "" && aData.owner == 'unraid' ){
               jQuery("#devinfo").setCell(rowid,'share','',{color:'red'},{'title':"Sorry, can't edit this share name because the device is now managed by unraid."});
           }
        },
        onSelectRow: function(id){
        if(id ) {
            if (  id!==lastsel_devinfo){
                jQuery('#devinfo').jqGrid('restoreRow',lastsel_devinfo);
                var cm =jQuery('#devinfo').jqGrid('getColProp','serial');
                var id = jQuery("#devinfo").jqGrid('getGridParam','selrow');

                var ret = jQuery("#devinfo").jqGrid('getRowData',id);

                if ( ret.owner != 'unraid' ) {
                    var extraparam=new Array();
                    extraparam['serial']=ret.serial;
                    extraparam['oldShareName']=ret.share ;
                    extraparam['owner']=ret.owner ;
                    jQuery('#devinfo').jqGrid('setGridParam',{
                        url:"/plugins/snap/manageList.php?q=1", postData: { serialNumber: ret.serial }
                        });
                    cm.editable = false;

                    jQuery('#devinfo').jqGrid('editRow',id,true
                        ,null      //oneditfunc
                        ,function(response) {
                            var obj=jQuery.parseJSON(response.responseText);
                            if (obj.error) return false;
                            else return true;
                            }
                        ,"/plugins/snap/manageList.php?q=1"
                        , extraparam //extraparam
                        , aftersavefunc //aftersavefunc
                        ,null //errorfunc
                        ,null //afterrestorefunc
                        );

                    }
                    cm.editable = true;
                    lastsel_devinfo=id;


            } else {
                jQuery('#devinfo').jqGrid('restoreRow',lastsel_devinfo);
                lastsel_devinfo="";
                jQuery('#devinfo').jqGrid('resetSelection');
                }
            } //if(id && id
        },  //onSelectRow
        caption: "S.N.A.P."

    //});  //jQuery("#devinfo")
    //jQuery("#devinfo").jqGrid('navGrid','#pager',{ view:false,edit:false,add:false,del:false,search:false});
    }).navGrid( '#pager',{ view:false,edit:false,add:false,del:true,search:false},{zIndex:1234},{zIndex:1234},{zIndex:1234},{multipleSearch:true,overlay:false}).jqGrid('navButtonAdd','#pager',{
        caption:"Add",
        buttonimg:"",
        position:"last" ,
        title:"Add New Row",
        onClickButton: function(){
            alert("Adding Row");
            var datarow = { serial:"test", share:"test" };
            //var su=jQuery('#devinfo').jqGrid('addRowData', 0, datarow, 0);
            jQuery('#devinfo').jqGrid('editGridRow', "new", {});
            }
        }) ;
$('.ui-jqgrid-titlebar-close','#gview_devinfo').remove();

});

function aftersavefunc(rowid, response) {
         //this writes the owner from the server response to the owner cell in the just edited row.
         //because creating will change that cell.
         var obj=jQuery.parseJSON(response.responseText);
         if (obj.error) grid.jqGrid('restoreRow',lastSel);
         else {
              jQuery("#devinfo").jqGrid('setCell',rowid,'owner',obj.owner);
              jQuery('#devinfo').jqGrid('resetSelection');
              }
    }





//jqGrid: how to change cell padding
//http://stackoverflow.com/questions/3015201/jqgrid-how-to-change-cell-padding
</script>



<?PHP
//phpinfo();
//require_once 'jsonwrapper.php';
//include("jqgrid-php-v1.2/inc/jqgrid_dist.php");
//$grid->navigator = true;

?>

<style type="text/css">


body {
    font-family:Arial;
}
#wrapper {
    width:80%;
}
ul.tabs {
    width:250px;
    margin:0;
    padding:0;
}
ul.tabs li {
    display:block;
    float:left;
    padding:0 5px;
}
ul.tabs li a {
    display:block;
    float:left;
    padding:5px;
    font-size:0.8em;
    background-color:#e0e0e0;
    color:#666;
    text-decoration:none;
}
.selected {
    font-weight:bold;
}
.tab-content {
    clear:both;
    border:1px solid #ddd;
    padding:10px;
}
</style>


<div id="wrapper">
    <ul class="tabs">
        <li><a href="#" class="defaulttab" rel="tabs1">Tab #1</a></li>
        <li><a href="#" rel="tabs2">Tab #2</a></li>
        <li><a href="#" rel="tabs3">Tab #3</a></li>
    </ul>

    <div class="tab-content" id="tabs1">
<table id="devinfo" class="scroll"></table>
       <div id="pager" class="scroll" style="text-align:right;">></div>

    </div>
    <div class="tab-content" id="tabs2">Tab #2 content</div>
    <div class="tab-content" id="tabs3">Tab #3 content</div>
</div>




   <input type="button" onclick = "javascript:add();" value ="add" />
   Click Row to edit Share Name, press ENTER to save or ESC to cancel.

最佳答案

ui-widget-overlay 是一个通用的 jquery ui 样式类。它会在您应用此类的元素上创建一个覆盖层。

要在 jQgrid 上创建覆盖,您应该使用类jqgrid-overlay。这将阻止网格上默认的鼠标单击事件。
调出叠加层:

$("#lui_"+gridid).show();  

并隐藏它
$("#lui_"+gridid).hide();

关于jquery - jqGrid/ui-widget-overlay 阻止整个页面上的所有按钮和选项卡事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8708766/

相关文章:

javascript - 为什么我在图形后面添加背景图像后不再起作用?

javascript - 在 AngularJS 中使用 Jasmine 测试元素数量

jquery - 可能不允许 jQuery 可排序移动项目在同一列表中,但可以使用其他列表吗?

javascript - jQuery UI 工具提示 : Close on click on tooltip itself

javascript - jquery ajax 历史和书签插件

javascript - 使用 jQuery 设置背景图像仅更改背景一次

javascript - 如何在自动完成文本框选定值上使用 CSS

jquery - free-jqGrid - 显示数值而不是选择单元格的文本

jquery - 如何更改 jqgrid 的列排序图标?

jqGrid客户端搜索