2015-11-08 28 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

相關問題