Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.12.2011, 17:13
Аспирант
Отправить личное сообщение для skfyann Посмотреть профиль Найти все сообщения от skfyann
 
Регистрация: 27.12.2011
Сообщений: 90

Дважды вызывается blur
Надеюсь, что объясню понятно, и проблема окажется простой...

Идея - при нажатии клавиши "enter" в текстовом поле запускается обработчик события blur, который выполняет определенные действия.

Проблема - обработчик события запускается дважды. Вот что я делаю не так - не понятно

$(document).ready( function() {

	$("#testText").keypress(function(e){
		if(e.keyCode == 13) {$("#testText").blur();}
	});

	$("#testText").blur(function(){
		alert(1);
	})

});
Ответить с цитированием
  #2 (permalink)  
Старый 27.12.2011, 17:57
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Нажатие на Enter в текстовом поле и так вызовет blur. Можете просто отменить действие по умолчанию, вызвав e.preventDefault() в теле вашего условия.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #3 (permalink)  
Старый 27.12.2011, 21:58
Аспирант
Отправить личное сообщение для skfyann Посмотреть профиль Найти все сообщения от skfyann
 
Регистрация: 27.12.2011
Сообщений: 90

Сообщение от Nekromancer Посмотреть сообщение
Нажатие на Enter в текстовом поле и так вызовет blur.
Нет, не вызывается. Если бы это было так, то обработчик бы бы не нужен. Под текстовым полем я имел ввиду тег <input>, если я неправильно выразился.

Добавление e.preventDefault() не помогает, что естественно для этого случая.
Ответить с цитированием
  #4 (permalink)  
Старый 27.12.2011, 22:04
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

еще бы ему не сработать, правильно делает что срабатывает..
Вы открываете алерт, который выводит фокус из элемента и срабатывает блюр
Ответить с цитированием
  #5 (permalink)  
Старый 27.12.2011, 22:07
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

<input id="testText" type="text" />
<div id="debug">0</div>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready( function() {
 
    $("#testText").keypress(function(e){
        if(e.keyCode == 13) {$("#testText").blur();}
    });
 
    $("#testText").blur(function(){
        var el = document.getElementById('debug');
        el.innerHTML = parseInt( el.innerHTML ) + 1;
    })
 
});
</script>
Ответить с цитированием
  #6 (permalink)  
Старый 27.12.2011, 22:10
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

skfyann,
таки да, срабатывает только change, причём конечно надо поменять что то.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #7 (permalink)  
Старый 27.12.2011, 22:19
Аспирант
Отправить личное сообщение для skfyann Посмотреть профиль Найти все сообщения от skfyann
 
Регистрация: 27.12.2011
Сообщений: 90

devote,
Спасибо, понял в чем проблема.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать какой скрипт вызывается при клике по эленету (если это прямо не прописано) Dmitriy Komar Events/DOM/Window 4 08.12.2011 17:21
Не вызывается метод плагина $.widget Viper jQuery 4 20.10.2011 15:12
Обработчик click вызывается несколько раз или не всегда вызывается OlegJquery jQuery 2 21.07.2011 20:37
[Closure Compiler] Как запретить инлайнить функцию, которая вызывается из setTimeout? xintrea Events/DOM/Window 4 11.02.2011 16:23
onload на iframe срабатывает дважды hogart Events/DOM/Window 3 09.12.2009 18:09