2014-01-14 72 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'不被支持,但正确的地方...我可能不得不添加一个键盘触发器来检查输入框的最后一个值,如果它是无效的,将其删除....用户将看到: –