2015-03-25 80 views
-2

大家好,對不起我的英文。如何在onChange之前觸發onClick事件(即使值已更改)?

繼此jdfiddle後,我遇到了一個我不明白的問題。

首先我改變輸入值,然後點擊按鈕,我期望看到的是「點擊」,但我看到「改變」,意思是onclickonchange之後被調用。

<input type="text" onChange="alert('change')" /> 
<button type="button" onClick="alert('click');">Click!</button> 

我對這個post那是因爲鉻的時候觸發了onclick事件之前onchange事件的發現。但是我並沒有和這篇文章一樣的需求,因爲我的事件沒有在同一個標​​籤中聲明。其次,如果我點擊按鈕,我只想執行onclick函數,而不是onclick,然後onchange(這種方法包含使用onMouseDown)。

你有一個很好的方法來做到這一點?

+0

在你的情況onchange事件會因爲因爲執行變更事件肯定會onclick事件之前調用單擊按鈕時,焦點將出現在文本框之外。 – 2015-03-25 11:22:24

+0

這是按照預期工作的,當您按下按鈕時,您將焦點放在已更改的元素上,以便首先觸發該事件。 據我瞭解你的問題,你應該刪除onchagen事件? – Henrik 2015-03-25 11:25:03

+0

@Henrik如果我想讓代碼保持onchange事件呢? – Clemzd 2015-03-25 12:38:49

回答

0

好的,我可以看到你真的不想這樣。 你可以讓on change函數先運行,然後再看看有什麼焦點,如果是那個按鈕,你會知道它被點擊了,因此是失去焦點的原因。

而改變功能正在運行,因爲身體仍然集中在這個時候,你可以不檢查這個..

<head> 
    <script language="javascript"> 
    function focussed() 
    { 
    var triggerElement = document.activeElement 
    alert(triggerElement) 
    console.info(triggerElement) 
    } 

    function change() 
    { 
    alert("change") 
    setTimeout(focussed, 1) 
    return true 
    } 
    </script> 

</head> 
<body> 
    <input type="text" onChange="alert('change')" /> 
    <button type="button" onClick="alert('click');">Click!</button> 
</body> 
相關問題