我需要一个输入框(type='text'),把用户输入的内容发送到服务器上验证其可用性。 我使用委托为元素添加事件处理程序:
关键处理程序在我的桌面上完美运行,但在移动设备上却不行。希望您能看到我正在尝试将某些字符输入到框中(并使用退格键删除字符)。
由于我看不到pagemessage元素更新的事实,“keypress”似乎没有被截取。我尝试在keyup/keydown中处理这个问题,但我不确定如何应用shiftKey位来获取实际按下的字符-例如,按+5将给出“%”,但在keydown中它返回shiftKey和5。
我阅读了文档,并且找到最接近“keypress”的是“tap”事件,但那也不起作用。
我尝试像这里的一篇帖子中建议的那样捕获“keypress”事件,在桌面上这不能捕获退格键,并且在移动设备上根本不起作用。
然后我尝试了另一个帖子中建议的方法:
并且,在桌面浏览器或移动设备中都无法正常工作。我尝试将输入类型更改为“搜索”,并获得了一个漂亮的增强功能,按键确实会添加一个清除按钮...但在移动设备上对于我的自定义功能没有任何作用。我想我已经没有尝试的东西了,唯一剩下的就是添加一个按钮去检查-但没人想要那个 : )。有人知道我如何做到我所需的吗?如果相关的话,我正在使用chrome在我的台式机和Android设备(HTC one和Nexus 5)上。
$(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。
我阅读了文档,并且找到最接近“keypress”的是“tap”事件,但那也不起作用。
我尝试像这里的一篇帖子中建议的那样捕获“keypress”事件,在桌面上这不能捕获退格键,并且在移动设备上根本不起作用。
然后我尝试了另一个帖子中建议的方法:
var inputEV = 'oninput' in window ? 'input' : 'keyup';
$("#new_domain").off(inputEV);
$("#new_domain").on(inputEV, function (e) {
keydown(e);
keyup(e);
});
并且,在桌面浏览器或移动设备中都无法正常工作。我尝试将输入类型更改为“搜索”,并获得了一个漂亮的增强功能,按键确实会添加一个清除按钮...但在移动设备上对于我的自定义功能没有任何作用。我想我已经没有尝试的东西了,唯一剩下的就是添加一个按钮去检查-但没人想要那个 : )。有人知道我如何做到我所需的吗?如果相关的话,我正在使用chrome在我的台式机和Android设备(HTC one和Nexus 5)上。