2

我面临一个问题,jqGrid我不知道是否有一个简单的解决方案。

当我第一次单击一行时,应用程序会slideUp显示一个包含有关寄存器信息的标题,如果我再次单击应用程序slideDown此标题。这项工作是在onSelectRow发生的情况下编码的,jqGrid并且工作正常。

当我连续双击时,问题就来了。在这种情况下,应用程序slideUp包含有关注册的所有内容,其中包含标题。我要防止的行为是onSelectRow因为当ondblclickRow事件被触发时,该onSelectRow事件之前被触发了两次。

这是我的一段代码:

ondblClickRow: function(id) {  
    if (model.gisgridmap.context.id=="griddiv" && $(".editbt").length>0) {                  
        if (model.selectedrow == id) {
            $el.trigger("onUnselectRow");   
            $(this).find(".ui-state-highlight, [aria-selected='true']").removeClass('ui-state-highlight');  
            model.selectedrow = 0;  
        }
        else{
            $el.trigger("onSelectRow", id);  
            $(this).find('[aria-selected=true]').addClass('ui-state-highlight');
            model.selectedrow = id;

            pui.editForm(model);
        } 
},
onSelectRow: function(id,status,e){
    if (model.selectedrow == id) {
        $el.trigger("onUnselectRow");   
        $(this).find(".ui-state-highlight, [aria-selected='true']").removeClass('ui-state-highlight');  
        model.selectedrow = 0;  
    }
    else{
        $el.trigger("onSelectRow", id);  
        $(this).find('[aria-selected=true]').addClass('ui-state-highlight');
        model.selectedrow = id;
    } 
}

提前致谢。

4

2 回答 2

0

你可以试试这个:

ondblClickRow: function(id, status, e) {
    e.preventDefault(); // see : http://api.jquery.com/event.preventDefault
    e.stopPropagation(); // see : http://api.jquery.com/event.stopPropagation
    ...
}
于 2013-10-02T08:28:24.860 回答
0

最后,我放了一个timeout足够dblclick的时间来显示标题,之后表格slidesUp没有奇怪的行为。我无法解决我想要的事件触发问题,但解决方案很好。

           ondblClickRow: function(id, iRow, iCol, e) {
                pui._hideBar();
                if (model.gisgridmap.context.id=="griddiv" && $(".editbt").length>0) {                  
                    $(this).find('[aria-selected=true]').addClass('ui-state-highlight');
                    pui.showForm(model, id, false, model.gisgridmap.context.id);
                    setTimeout(function(){
                        model.selectedrow = id;
                        pui.editForm(model);
                    }, 400);                        
                }                    
            },
            onSelectRow: function(id,status,e){   
                if ($(this).jqGrid('getGridParam', 'multiselect')) {
                    $el.trigger("onSelectRow", id);
                    return;
                } 
                e.preventDefault();
                if (model.selectedrow == id) {
                    e.preventDefault();
                    $el.trigger("onUnselectRow");   
                    $(this).find(".ui-state-highlight, [aria-selected='true']").removeClass('ui-state-highlight');  
                    model.selectedrow = 0;  
                }
                else{
                    $el.trigger("onSelectRow", id);  
                    $(this).find('[aria-selected=true]').addClass('ui-state-highlight');
                    model.selectedrow = id;
                } 
            }

最好的祝福。

于 2013-10-08T08:51:01.807 回答