【发布时间】:2014-02-02 11:36:03
【问题描述】:
我需要输入 (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。
我阅读了文档,发现最接近“按键”的是“点击”事件,但这也不起作用。
我已尝试按照此处的一篇文章中的建议捕获“按键”事件,在桌面上这不会捕获退格,在移动设备上什么也不做。
然后我按照另一篇文章中的建议尝试了这个:
var inputEV = 'oninput' in window ? 'input' : 'keyup';
$("#new_domain").off(inputEV);
$("#new_domain").on(inputEV, function (e) {
keydown(e);
keyup(e);
});
它在桌面浏览器或移动设备上都不起作用。
然后我尝试将输入类型更改为“搜索”,我得到了一个相当不错的增强功能,即按键确实添加了一个清除按钮...但在移动设备上对我自己的功能没有任何作用。
我想我已经用完了可以尝试的东西,唯一剩下的就是添加一个按钮来检查 - 没有人想要那个:)
有人知道我怎样才能做我需要的吗?
如果相关,我在我的桌面和安卓设备(HTC 1 和 Nexus 5)上使用 chrome
【问题讨论】:
标签: javascript android jquery-mobile onkeyup