2017-03-21 60 views
1

想知道是否有人能夠幫助我解決keyup和keydown之間的差異,以及他們爲什麼不以相同的方式工作?onkeydown和onkeyup之間的行爲差​​異

我有一個的jsfiddle這裏我在那裏做了一些例子 https://jsfiddle.net/m9wcn982/1/

HTML:

<div id="exercise"> 
    <div> 
     <input type="text" v-on:keyup="listen"> 
     <p>{{ value }}</p> 
    </div> 
    <div> 
     <input type="text" v-on:keydown="listen"> 
     <p>{{ value }}</p> 
    </div> 
</div> 

的Javascript:

new Vue({ 
    el: '#exercise', 
    data: { 
     value: '' 
    }, 
    methods: { 
     listen: function(){ 
     this.value = event.target.value; 
     } 
    } 
}); 

爲什麼KEYDOWN落後而KEYUP總是1個字符輸出什麼鍵輸入後立即輸入,例如,我會輸入「foo」第二個盒子,但只獲得「fo」作爲一個值。但是如果我在第一個框中輸入「foo」,我會得到「foo」作爲值。

+1

輸入框的值不會在'keydown'上立即改變,但是如果你註銷'event.key',你可以捕獲被按下的鍵。你將'this.value'設置爲輸入的值,當'keydown'激發時它還沒有更新。 – Bert

回答

1

​​是當第一次按下按鍵時。元素的值尚未更改。這是一種可以取消更改值的方法。

keyup是什麼時候它被釋放,並在2之間的元素的值已經改變。

+0

我已經多次看到這個答案,同時試圖尋找答案,但爲什麼這只是這樣的事情。但是如果您在keydown時將其更改爲警報,則它的功能與keyup相同。 – Hudspeth

+0

@Hudspeth因爲這裏有一個'keyup'。 –

+0

這就是我想要包裹我的頭。對我來說,如果我有一些與keydown相關的東西來設置某個值,那麼只要按下該鍵就會設置它。但這種行爲不是我所期望的,只有keyup纔有這種行爲。也許我只是讀了很多東西。 – Hudspeth

0

當用戶按下按鍵時,keydown和keyup事件觸發。

​​:用戶按下某個鍵時觸發。它在用戶保持按下的狀態下重複。

keyup:在用戶釋放密鑰後觸發,在執行該密鑰的默認操作後觸發。

相關問題