Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的文本框的onchange事件在模糊时触发-不是由每个键入的字符触发?_Javascript_Asp.net_Events_Text_Textbox - Fatal编程技术网

Javascript 为什么我的文本框的onchange事件在模糊时触发-不是由每个键入的字符触发?

Javascript 为什么我的文本框的onchange事件在模糊时触发-不是由每个键入的字符触发?,javascript,asp.net,events,text,textbox,Javascript,Asp.net,Events,Text,Textbox,为什么我的文本框的onchange事件会在模糊上触发,但不会在每个键入的字符上触发 我想通过键盘按每种类型在文本框中输入完整的文本 但是,onchange事件只在blur上触发 此外,onkeyup-onkeypress-onkeydown事件没有帮助,因为这些事件首先触发,然后最后输入的字符应用于文本框 我应该使用什么事件或如何使用它?在您输入文本后,onkeyup事件将触发: onkeyup='alert(document.getElementById("myTextBox").value)

为什么我的文本框的
onchange
事件会在模糊上触发,但不会在每个键入的字符上触发

我想通过键盘按每种类型在文本框中输入完整的文本

但是,
onchang
e事件只在blur上触发

此外,
onkeyup-onkeypress-onkeydown
事件没有帮助,因为这些事件首先触发,然后最后输入的字符应用于文本框


我应该使用什么事件或如何使用它?

在您输入文本后,onkeyup事件将触发

onkeyup='alert(document.getElementById("myTextBox").value);'

输入文本后,
将触发onkeyup事件:

onkeyup='alert(document.getElementById("myTextBox").value);'

您需要使用keyup、keydown或它们的组合。在keydown处理程序中,您可以获取文本框的before事件值。在keyup处理程序期间,可以获取after事件值。如果你得到一个空字符串,你就做错了

编辑:下面是一个示例,演示这两个事件是如何工作的。在第一个框中键入将更新其他两个框

<table>
    <tr>
        <td>input</td>
        <td><input type="text" id="textin" /></td>
    </tr>
    <tr>
        <td>keydown</td>
        <td><input type="text" id="keydownout" /></td>
    </tr>
    <tr>
        <td>keyup</td>
        <td><input type="text" id="keyupout" /></td>
    </tr>
</table>
<script>

    var readbox = document.getElementById('textin');
    var keydownbox = document.getElementById('keydownout');
    var keyupbox = document.getElementById('keyupout');

    function keydownhandler(e) {
        keydownbox.value = readbox.value;
    }

    function keyuphandler(e) {
        keyupbox.value = readbox.value;
    }

    readbox.addEventListener('keydown', keydownhandler, false);
    readbox.addEventListener('keyup', keyuphandler, false);

</script>

输入
键盘按下
弹起
var readbox=document.getElementById('textin');
var keydownbox=document.getElementById('keydownout');
var keyupox=document.getElementById('keyupout');
函数keydownhandler(e){
keydownbox.value=readbox.value;
}
函数keyuphandler(e){
keypubbox.value=readbox.value;
}
addEventListener('keydown',keydownhandler,false);
addEventListener('keyup',keyuphandler,false);

(适用于firefox/chrome)

您需要keypup、keydown或它们的组合。在keydown处理程序中,您可以获取文本框的before事件值。在keyup处理程序期间,可以获取after事件值。如果你得到一个空字符串,你就做错了

编辑:下面是一个示例,演示这两个事件是如何工作的。在第一个框中键入将更新其他两个框

<table>
    <tr>
        <td>input</td>
        <td><input type="text" id="textin" /></td>
    </tr>
    <tr>
        <td>keydown</td>
        <td><input type="text" id="keydownout" /></td>
    </tr>
    <tr>
        <td>keyup</td>
        <td><input type="text" id="keyupout" /></td>
    </tr>
</table>
<script>

    var readbox = document.getElementById('textin');
    var keydownbox = document.getElementById('keydownout');
    var keyupbox = document.getElementById('keyupout');

    function keydownhandler(e) {
        keydownbox.value = readbox.value;
    }

    function keyuphandler(e) {
        keyupbox.value = readbox.value;
    }

    readbox.addEventListener('keydown', keydownhandler, false);
    readbox.addEventListener('keyup', keyuphandler, false);

</script>

输入
键盘按下
弹起
var readbox=document.getElementById('textin');
var keydownbox=document.getElementById('keydownout');
var keyupox=document.getElementById('keyupout');
函数keydownhandler(e){
keydownbox.value=readbox.value;
}
函数keyuphandler(e){
keypubbox.value=readbox.value;
}
addEventListener('keydown',keydownhandler,false);
addEventListener('keyup',keyuphandler,false);

(适用于firefox/chrome)

读了你的问题后,我真的迷路了!如果不是关键事件,它将如何改变?嗨,亲爱的朋友/测试它!/例如,当您使用onkeyup并在文本框中键入一个字符(如“a”)时,首先触发onkeyup,当您在onkeyup函数中使用textbox.value时,它会显示空字符串。。。onkeyup事件结束后,“a”字符出现在文本框/上,但我希望它出现在onkeyup函数上!知道吗?看完你的问题我真的迷路了!如果不是关键事件,它将如何改变?嗨,亲爱的朋友/测试它!/例如,当您使用onkeyup并在文本框中键入一个字符(如“a”)时,首先触发onkeyup,当您在onkeyup函数中使用textbox.value时,它会显示空字符串。。。onkeyup事件结束后,“a”字符出现在文本框/上,但我希望它出现在onkeyup函数上!有什么想法吗?真的非常感谢你的回答。。。。但它仍然丢失了一个字符(上次输入),有人告诉我在keyup事件中使用setTimer来获取文本框值!我不知道做什么是最好的还是没有什么好主意?我已经用一个例子更新了我的帖子。如果您期望的行为与示例提供的不同,请告诉我们可能是什么。非常感谢您的回答。。。。但它仍然丢失了一个字符(上次输入),有人告诉我在keyup事件中使用setTimer来获取文本框值!我不知道做什么是最好的还是没有什么好主意?我已经用一个例子更新了我的帖子。如果您期望的行为与示例提供的不同,请告诉我们可能是什么。我这样做了/但它给了我文档。getElementById(“myTextBox”).Length-1字符/i不是最后输入的字符。我这样做了/但它给了我文档。getElementById(“myTextBox”)。Length-1字符/i不是最后输入的字符