Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止在触发ondblClickRow事件时发生OnSetRow事件_Javascript_Jquery_Jqgrid - Fatal编程技术网

Javascript 如何防止在触发ondblClickRow事件时发生OnSetRow事件

Javascript 如何防止在触发ondblClickRow事件时发生OnSetRow事件,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我正面临jqGrid的问题,我不知道是否有一个简单的解决方案 当我第一次单击某一行时,如果我再次单击应用程序slideDown此标题,则应用程序slideUp将显示一个包含注册表信息的标题。这项工作在jqGrid的onsetrow事件中进行编码,工作正常 当我连续双击时,问题就出现了。在这种情况下,应用程序slideUp将包含关于寄存器的所有内容以及标题。我要防止的行为是onsetrow,因为当触发ondblclickRow事件时,onsetrow事件之前已触发两次 这是我的代码: ondblC

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

当我第一次单击某一行时,如果我再次单击应用程序
slideDown
此标题,则应用程序
slideUp
将显示一个包含注册表信息的标题。这项工作在
jqGrid
onsetrow
事件中进行编码,工作正常

当我连续双击时,问题就出现了。在这种情况下,应用程序
slideUp
将包含关于寄存器的所有内容以及标题。我要防止的行为是
onsetrow
,因为当触发
ondblclickRow
事件时,
onsetrow
事件之前已触发两次

这是我的代码:

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;
    } 
}
提前感谢。

您可以尝试以下方法:

ondblClickRow: function(id, status, e) {
    e.preventDefault(); // see : http://api.jquery.com/event.preventDefault
    e.stopPropagation(); // see : http://api.jquery.com/event.stopPropagation
    ...
}

最后,我在
dblclick
上放置了一个
timeout
,它有足够的时间显示标题,然后表单
向上滑动
,没有奇怪的行为。我无法按照自己的意愿解决事件触发的问题,但解决方案很好

           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;
                } 
            }

致意。

与您的问题非常接近。您似乎缺少了ondblClickRow代码中的
}
。@Oleg感谢您的回答,虽然很接近,但还不够。最后,我找到了一个解决方案,可能一点也不清楚,但已经足够接近所希望的行为了。@ShimonRachlenko抱歉,复制和粘贴问题,谢谢@vmonrabal您能否将您的解决方案作为答案发布,以便其他人也能从中受益?