2011-05-06 140 views
0

我很難試圖找出一種方法,我可以在沒有IE8的情況下更新輸入字段,發起第二次更改事件。在FF 3.6這個代碼工作,因爲我想要的。如何停止在JQuery中觸發第二個更改事件?

我認爲從函數事件處理程序返回false會阻止任何進一步的事件被觸發,但它不會在IE中出現。

這是我迄今爲止嘗試:

  1. 在現場事件處理函數返回false。
  2. 使用綁定和event.stopImmediatePropagation()。雖然我想在實際的代碼中使用,因爲表單元素正在通過AJAX調用進行交換。
  3. 在輸入字段更新之前和之後使用die並再次生活。但我想這個更新的輸入字段發生在函數完成後。

有什麼明顯的我在這裏失蹤?我對JQuery相當陌生,所以也許我犯了一個愚蠢的錯誤:)

謝謝!

下面是一些測試代碼,以顯示該問題:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script> 

    <script> 

    var counter = 0; 

    $(document).ready(function() { 


     $('.eventHandler').live('change', handleChangeEvent); 

     }); 

    function handleChangeEvent(event){ 

     //$('.eventHandler').die(); 

     $(this).val(counter++); 

     //$('.eventHandler').live('change', handleChangeEvent); 

     return false; 

    } 

    </script> 

    </head> 
     <body> 
      <form> 
       <input type="text" value="0.00" id="54501" class="eventHandler"/> 
      </form> 
     </body> 
    </html> 

回答我自己的問題

不允許作爲一個新的用戶來回答我的問題8個小時。所以現在就把這個放在這裏

只是通過解釋這個問題更多地向Dr.Molle解釋。總是這樣可以幫助解決問題。

因爲當我更新輸入字段值時輸入仍然有焦點,當我點擊它時會觸發另一個「更改」事件。

所以如果我在更新輸入字段值之前刪除焦點,它永遠不會觸發另一個事件。

我改變了代碼,這和作品,我希望它在IE:

var counter = 0; 

    $(document).ready(function() { 


     $('.eventHandler').unbind('blur').live('change', handleChangeEvent); 

     }); 

    function handleChangeEvent(event){ 


     $('body').focus(); 


     $(this).val(counter++); 
     event.preventDefault(); 




     return false; 

    } 

感謝您的幫助Dr.Molle,在解釋它更是幫助我工作了 - 乾杯!

回答

0

您可以先解除對已經綁定變化的事件:
$('.eventHandler').unbind('change').live('change', handleChangeEvent);

+0

嗨感謝答覆。只是嘗試了所描述的解除綁定,但不幸的是,在更新輸入字段時仍然觸發了更改事件。 – mrchimp 2011-05-06 10:43:56

+0

嗯,如果我取消註釋handleChangeEvent中的2行,一切工作正常,也在IE8中。期望的行爲是什麼? – 2011-05-06 12:10:30

+0

奇怪的是,對我來說,這兩條線的註釋仍然不起作用。最初它似乎有效,但只要您點擊頁面上其他地方的輸入損失重點,它甚至會觸發另一個更改。因此陷入循環。理想情況下,只需要能夠使用值更新輸入字段而不觸發另一個「更改」事件。看着我的例子的奇怪的要求。但在應用程序中,我希望看到輸入字段已清除,然後使用結果進行更新。但有時用戶輸入一個值,我不想更新輸入。 – mrchimp 2011-05-06 13:02:22

相關問題