2014-01-14 81 views
4

我需要一個輸入(type ='text')來將結果發送到我的服務器,以檢查用戶輸入的內容的可用性。jquery mobile - 移動設備上的keyup keyyd

我用的是委託給事件處理程序添加到的元素:

$(document).delegate('#signup', 'pageshow', function() { 
    var keydown = function(e) { 
     e = e || window.event; 
     var char = e.which || e.keyCode; 
     if (char == 8) { 
      $(".pagemessage").text("Pressed: '<BACKSPACE>'"); 
      appcheckDomainOnKeyDown(); 
     } 
     return true; 
    }; 

    var keyup = function(e) { 
     e = e || window.event; 
     var char = e.which || e.keyCode; 
     if (char == 8) { 
      appcheckDomainOnKeyUp(); 
     } 
     return true; 
    }; 

    var keypress = function(e) { 
     e = e || window.event; 
     var char = e.which || e.keyCode; 
     var str = String.fromCharCode(char); 
     $(".pagemessage").text("Pressed: '" + str +"'"); 
     if (/[a-zA-Z0-9-\._]/.test(str) || char == 8 || char == 9) { 
      appcheckDomainOnKeyDown(); 
      appcheckDomainOnKeyUp(); 
      return true; 
     } 
     return false; 
    }; 

關鍵左撇子我的桌面上,而不是在移動設備上正常工作。希望你可以看到我試圖讓某些字符進入框(和退格刪除字符。

從事實上我看不到pagemessage元素更新,'按鍵'似乎並沒有被困住。我試圖在keyup/keydown中處理這個問題,但我不知道如何應用shiftKey位來獲取實際的字符 - 例如,按+ 5會給出'%',但是在keydown中會返回shiftKey和5.

我閱讀文檔,我可以找到「按鍵」最接近的是「自來水」事件,但沒有任何工作。

我試圖誘捕「按鍵」事件作爲一個後建議在這裏,和在桌面上這不會陷入退格,並且在移動設備上什麼也不做。

我又試圖以此作爲建議在另一篇文章:

var inputEV = 'oninput' in window ? 'input' : 'keyup'; 
    $("#new_domain").off(inputEV); 
    $("#new_domain").on(inputEV, function (e) { 
     keydown(e); 
     keyup(e); 
    }); 

,並沒有在任何桌面瀏覽器或移動設備的工作。

然後我嘗試改變輸入類型爲'搜索',我得到了一個很好的增強,按鍵不會增加一個清晰的按鈕......但在移動設備上沒有任何關於我自己的功能。

我想我已經跑出來的東西去嘗試,留下的唯一一件事就是添加一個按鈕去檢查 - 沒有人願意說:)

任何人都知道我該怎麼做我需要什麼?

如果它是相關的,我使用的是鍍鉻我的臺式機和Android設備上(HTC一個,和Nexus 5)

回答

2

KEYUP應該工作。它適用於此示例:http://jsbin.com/aNEBIKA/2/。測試發現我的Galaxy S3。每次按鍵都會使用輸入的文本更新頁腳h3

難道是你在錯誤的時間綁定你的聽衆嗎?該文件確實表明這樣的結合:

$(document).bind('pageinit') 

http://demos.jquerymobile.com/1.2.0/docs/api/events.html

+0

我只是udated應用程序打印的東西到一個div以及是似乎是(e.which || e.keyCode)始終是零上我的設備。還有什麼其他選擇。我的問題似乎源於想要不允許某些字符。 'keypress'不被支持,但正確的地方...我可能不得不添加一個鍵盤觸發器來檢查輸入框的最後一個值,如果它是無效的,將其刪除....用戶將看到: –