2015-11-08 30 views
1

免费jqgrid包含ondblClickRow事件处理函数,用于打开订单细节。如何在移动设备上使用ondblClickRow事件

如果Google Chrome采用Samsung Galaxy S4仿真模式,则此事件不会生成文件。

要重现,在Chrome中打开

http://jsfiddle.net/amorris/ynw3c/

在三星Galaxy S4仿真模式,且在连续的jqGrid双击。 警告框未显示。 单击可正确选择行。

如何解决这个问题?
应该单独打开按钮添加到每个jqgrid行,而不是为此或有更好的方式来允许打开详细信息,如双击桌面上的行。

使用4.9.2-后

+0

我发现这个https://stackoverflow.com/ question/8825144/detect-double-tap-on-ipad-or-iphone-screen-using-javascript;似乎你需要用vanilla JS编写你自己的doubletap检测函数; jquery mobile还有其他你喜欢的功能。 –

回答

2

在我看来,你需要touchstart手柄绑定到网格并检测其引发了很短的时间以前touchstart事件之后touchstart。例如,您可以使用jQuery.data来保存之前touchstart事件的时间。

我修改您的演示,http://jsfiddle.net/OlegKi/yNw3C/12120/它使用下面的代码

$("#grid").bind("touchstart", function (e) { 
    var $this = $(this), now = new Date().getTime(), 
     lastTouchTime = $this.data("lastTouchTime") || now + 1, 
     timeInterval = now - lastTouchTime; 
    //console.log(e); 
    // the next line use constant 500 as 0.5 sec timeout between taps 
    if (timeInterval < 500 && timeInterval > 0) { 
     var $tr = $(e.target).closest("tr.jqgrow"); 
     if ($tr.length > 0) { 
      //console.log($tr[0]); 
      alert("double touchstart on rowid=" + $tr.attr("id")); 
     } else { 
      alert("double touchstart"); 
     } 
    } 
    $this.data("lastTouchTime", now); 
}); 

的代码显示警报至少在Chrome中的三星Galaxy S4仿真模式

+0

双击会改变触摸设备的缩放级别。不确定是否合理的打开它的功能。我将打开按钮添加到操作按钮列中。因此,点击此按钮即可打开详细信息,双击行为不会更改。 – Andrus

+0

@安德鲁斯:我不用自己的触摸设备免费jqGrid。我只想告诉你如何处理双击移动设备的主要方式。这可能是另一种方式,但这不是我所在的专家。可能你可以问其他人。 – Oleg

+0

我没有触摸设备的经验,并尝试使用jqgrid为他们创建我的第一个应用程序。此代码需要在jqgrid行中双击。触摸设备中的单击可激活选择和超链接。因此,看起来最好使用单击激活并将此代码添加到beforeSelectRow中,以使用jqgrid为选择提供本地用户体验。 – Andrus

相关问题