jquery mobile - 移动设备上的keyup keydown

时间:2014-01-14 11:59:36

标签: javascript android jquery-mobile onkeyup

我需要输入(type ='text')才能将结果发送到我的服务器以检查用户输入的内容的可用性。

我使用委托将事件处理程序添加到元素:

$(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元素更新的事实来看,'keypress'似乎没有被困。我尝试在keyup / keydown中处理这个问题,但是我不确定如何应用shiftKey位来按下实际字符 - 例如按+ 5会给'%'但是在keydown中它会返回shiftKey和5。 / p>

我阅读了文档,我能找到的最接近'keypress'的是'tap'事件,但这也不起作用。

我试图按照这里的一篇文章中的建议捕获'keypress'事件,而在桌面上这不会捕获退格,并且在移动设备上什么都不做。

然后我按照另一篇文章的建议尝试了这个:

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

并且它无法在桌面浏览器或移动设备中使用。

然后我尝试将输入类型更改为“搜索”,并且我得到了一个非常好的增强功能,按键确实添加了一个清晰按钮......但在移动设备上没有对我自己的功能做任何事情。

我想我已经用尽了一些东西,唯一剩下的就是添加一个按钮来检查 - 没有人想要这样做:)

任何人都知道如何做我需要的事情?

如果相关,我在桌面和Android设备上使用chrome(HTC one和Nexus 5)

1 个答案:

答案 0 :(得分:2)

Keyup应该可行。它适用于此示例:http://jsbin.com/aNEBIKA/2/。在我的Galaxy S3上测试了。每个按键都会使用输入的文本更新页脚h3元素。

您是否在错误的时间绑定了听众?该文档确实建议如下绑定:

$(document).bind('pageinit')

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