2011-12-05 11 views
3

私は、このサンプルコードを書く:jQueryの「変更」イベント「クリック」cancelイベント

<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

恐らく警告は第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

work!今では、なぜ私のコードが2つのajax呼び出し(console.logではなく)で動作しないのか理解しなければなりません。 – Zax

0

thisフィドルですべて正常です。

+0

私はブラウザ(クロム15)でこれを試して、動作しません、テキストボックスで 'ヘルプ'を書いてから、ボタンを押してみてください...私はただ一つのダイアログボックス(テキスト変更イベント) – Zax

+0

これは、2つのアラートが同時に発生しているためです。 2つのイベントを別々に実行すると、それは起こりません。たとえば、テキストボックスに入力してからボタンをクリックしないでぼかしを入れ、ボタンをクリックします。 –

+0

実際には、私は2つの異なるajaxコールを扱いますが、各ハンドラに1つずつありますが、1つだけが起動されます! (入力は変更され、ボタンは押されません)。 – Zax

関連する問題