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您能否将您的解决方案作为答案发布,以便其他人也能从中受益?