2014-02-04 2 views
0

рассмотреть следующие,Как остановить событие в javascript?

<body> 
    <form id="form1" runat="server"> 
     <div> 
      <input type="text" id="txt1" /> 
      <input type="button" id="btn1" value="Submit"/>    
     </div> 
    </form> 
    <script>   
     $("#txt1").live("blur", function() { 
      console.log('blur');    
      return false; 
     }); 

     $("#btn1").live("click", function() { 
      console.log('click'); 
      return false; 
     }); 
    </script> 
</body> 

Приведенный выше код будет регистрировать событие размытости и нажмите событие на курке соответствующих событий. Если щелкнуть или изменить что-то в текстовом поле, а затем нажать на кнопку btn1 blur и нажать событие произойдет соответственно. Что я хочу, если происходит размытие события из-за btn1, тогда нажмите событие не должно произойти, оно должно регистрировать только событие размытия, I хотите остановить событие click. Как это сделать? Может ли кто-нибудь помочь?

+0

см. Мой (@ user2727841) ответ и ссылку ... Если он выполнит ваше требование, тогда проголосуйте за него для других. – user2727841

+0

Хорошо, ваша проблема решена ... – user2727841

ответ

0

Here является одним из способов решить эту проблему путем добавления тайм-аут.

var inFocus = false; 

$("#txt1").focus(function() { 
    inFocus = true; 
    $("#log").prepend("<p>focus</p>"); 

}); 
$("#txt1").blur(function() { 
    setTimeout(function(){inFocus = false;},200); 
    $("#log").prepend("<p>blur</p>"); 
}); 
$("#btn1").click(function() { 
    if (!inFocus) { 
     $("#log").prepend("<p>click</p>"); 
    } 
}); 

В я положил выход в окно.

+0

Спасибо, Chi, это работает. Проблема решена. – Yogesh

0

Вы не можете «остановить» другое/иностранное событие, подобное этому. Event.preventDefault() и/или Event.stopPropagation() (которые будут вызваны при возврате false из обработчика события jQuery), позволит вам остановить и предотвратить то же самое событие от дальнейшей обработки на родительских узлах.

В вашем случае вам нужна ваша собственная логика. Используйте некоторые переменные и правильно их установите и, если необходимо, проверьте значение. Например, при нажатии вы устанавливаете FOOBAR = true, а в blur вы проверяете if(FOOBAR) и действуете по этому вопросу.

0

попробовать это

<form id="form1" runat="server"> 
    <div> 
     <input type="text" id="txt1" /> 
     <input type="button" id="btn1" value="Submit"/>    
    </div> 
</form> 

Javascript код

$("#txt1").on("blur", function (event) { 
    event.preventDefault(); 
    alert('blur');    
    return false; 
}); 
$("#btn1").on("click", function (event) { 
    event.preventDefault(); 
    alert('click'); 
    return false; 
}); 

также проверить его here и помните live ключевое слово deprectaed из JQuery 1.9 использование on вместо live в JQuery 1.9 или выше.

+0

Thanxx, это работает, но из-за некоторой совместимости проблемы Я не могу использовать функцию «on». Поэтому я не могу ссылаться на событие. – Yogesh

+0

И он не работает с console.log. – Yogesh

+0

работает с консолью и для этого вы видите ее в консоли. – user2727841

0

Вы должны уничтожить одно события увидеть демо-

Надеется, что это помогает вам.

jsfiddle.net/rkumar670/5a86V

+0

Я думаю, что ваша страница была удалена. – Yogesh

+0

Попробуйте это http://jsfiddle.net/rkumar670/5a86V/ –

+0

Rahul, спасибо за ваш ответ, но он уничтожит событие click навсегда, и я не хочу этого. – Yogesh

Смежные вопросы