2011-12-05 53 views
3

在我寫這篇文章的示例代碼:jQuery的「變」事件取消「click」事件等元素

<script type="text/javascript" > 
    $(document).ready(function() { 
     $('input:text').change(inputChangeHandler); 
     $('input:button').click(buttonClickHandler); 
    }); 
    function inputChangeHandler(event){ 
     alert('[Text changed] ' + $(this).val()); 
    } 
    function buttonClickHandler(event){ 
     alert('[Button click]'); 
    } 
</script> 

<input type="text" name="txt" /> 
<input type="button" value="button" /> 

嘗試改變文字,然後點擊按鈕,只有「變化事件」被觸發。

任何想法觸發「變化」,'點擊'的事件?

回答

2

如果我將代碼更改爲在控制檯中記錄消息,Firefox中的兩個事件都會被觸發,可能警報會停止第二個事件。

<script type="text/javascript" > 
    $(document).ready(function() { 
     $('input:text').change(inputChangeHandler); 
     $('input:button').click(buttonClickHandler); 
    }); 
    function inputChangeHandler(event){ 
     console.log('[Text changed] ' + $(this).val()); 
    } 
    function buttonClickHandler(event){ 
     console.log('[Button click]'); 
    } 
</script> 

<input type="text" name="txt" /> 
<input type="button" value="button" /> 
+0

工作!現在我必須理解爲什麼我的代碼不能用2個Ajax調用(而不是console.log)。 – Zax

0

一切工作正常在this小提琴。

+0

我試着用我的瀏覽器(chrome 15)試試這個,不行,試着在文本框上寫'help',然後按下按鈕...我只看到一個對話框(文本改變事件),而不是第二個對話框(按鈕點擊) – Zax

+0

這是因爲兩個警報同時觸發。如果你分開執行這兩個事件,它不會發生。例如,輸入文本框,然後模糊(但不要單擊按鈕),然後單擊按鈕。 –

+0

在真實案例中,我是2個不同的ajax調用,每個處理器上有一個,但只有一個被觸發! (輸入改變了,沒有按下按鈕)。 – Zax