android如何做得到输入表单的值 element OnKeyPress 事件后?

发布时间: 2017/3/14 3:00:09
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

如何在 OnKeyPress 事件后获得一个文本框的值?比如说,我有以下代码︰

<input type = "number" id = "foo" onKeyPress = "submit();"/>
<script type = "text/javascript">
function submit()
{
var textValue = document.getElementById("foo").value;
alert(textValue);
}
</script>

不幸的是,这并不工作,因为后 OnKeyPress 触发时,该变量 textValue 仍将在后面的一个字符。我将使用 OnKeyUp ,但可悲的是,但不会影响 Android 设备除非 <input type = "text"> ,不能在我的情况......有谁知道的办法做到这一点?

解决方法 1:

如果唯一的问题是 Android 设备,我建议使用 onkeyup 别人。然后您可以检测如果它是 android (或如果 keyup 支持的输入),而且如果有必要,实施 Android 具体的解决方案。

function submit(){
    function submitNow() {
        var textValue = document.getElementById("foo").value;
        alert(textValue);
    }   
    if(isAndroid) {
        setTimeout(submitNow, 10);
    }
    else {
        submitNow() ;
    }
}

var isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1; 
var eventType = (isAndroid) ? "keyup" : "keypress" ;
document.getElementById("foo").addEventListener(EventType, submit);

你可以删除 onKeyPress = "submit();" 从您的输入。

当不上 Android ,此代码将行动通常情况下,使用 keyup 事件。当客户端是 Android ,它将等待 1/100 秒,足够 time 输入要更新,但太短是引人注目。

通常情况下,我会警告长按键,但我不知道的 Android keyboard ,支持他们。

Android唯一的解决办法︰

function submit(){
    function submitNow() {
        var textValue = document.getElementById("foo").value;
        alert(textValue);
    }   
    setTimeout(submitNow, 10);
}

document.getElementById("foo").addEventListener("keyup", submit);

你甚至可以让你 onKeyPress = "submit();" 如果你真的感觉像它。只是删除在这里的最后一行。

官方微信
官方QQ群
31647020