2011-05-06 55 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

相关问题