0

如何在 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">在我的情况下不起作用......有谁知道这样做的方法?

4

4 回答 4

2

我建议改用该input事件,该事件在输入值发生任何更改后触发(例如,通过键入的字符、删除、粘贴和拖放操作)。这将适用于除 IE < 9 之外的所有主要浏览器。

document.getElementById("foo").addEventListener("input", function() {
    alert("CHANGED!");
}, false);
于 2012-08-15T12:01:43.667 回答
1

尝试以下代码

<input type = "number" id = "foo" onKeyPress = "submit(this);"/>
    <script type = "text/javascript">
    function submit(e) {
      alert(e.value);
    }
    </script>
于 2012-08-15T10:44:07.383 回答
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 秒,这是输入更新的足够时间,但太短而不会被注意到。

通常,我会警告不要长按按键,但我不知道支持它们的 Android 键盘。

仅限安卓解决方案:

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

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

onKeyPress = "submit();"如果你真的喜欢,你甚至可以保留你的。只需删除此处的最后一行。

于 2012-08-15T10:45:32.150 回答
1

你试过使用 jQuery 吗?

要将 jQuery 添加到您的页面,只需将其放在页面 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>的头部即可。

然后执行您需要的操作,使用代码

<script type="text/javascript">
  $("#my_field").keydown (function (e) {
      alert ($(this).val());
  });
</script>

其中#myField 是您的字段的ID。

注意 您将不再需要输入中的按键事件。

于 2012-08-15T10:45:43.267 回答