jQuery: как сначала запустить onclick перед onblur? - PullRequest
7 голосов
/ 23 июня 2011

Как я могу запустить событие onclick перед событием onblur, если в данный момент я сосредоточен на текстовом поле в jQuery?

Ожидаемый результат: Сначала запустите событие нажатия кнопки, прежде чем событие размытия в текстовом поле. Оповещения "mybtn onclick alert"

Демо: http://jsfiddle.net/Zk8Fg/

Код:

<input type="text" name="fname" id="fname" value="" /><br />
<input type="button" name="mybtn" id="mybtn" value="Click Me" />

<script language="javascript">
$(document).ready(function() {
    myFunc();
});

function myFunc() {
    $('#fname').focus().blur(function() {
        alert('fname onblur alert'); 
    });

    $('#mybtn').click(function() {
        alert('mybtn onclick alert'); 
    });
}
</script>

Спасибо:)

Ответы [ 2 ]

6 голосов
/ 23 июня 2011

Что ж, вероятно, это часть стандарта, когда событие запускается первым, поэтому вам, вероятно, не следует менять порядок. Однако вы можете отложить полученное действие с помощью window.setTimeout с небольшой задержкой.

$('#fname').focus().blur(function() {
    window.setTimeout(function(){alert('fname onblur alert')},0.1); 
});

Я согласен с другими комментариями, хотя, похоже, вам следует переосмыслить то, что вы делаете по этому поводу, потому что переупорядочивание событий по умолчанию кажется мне неудачным взломом, который, вероятно, имеет более элегантные решения.

3 голосов
/ 23 июня 2011

Если поле ввода в настоящее время сфокусировано, вы не можете сфокусироваться на другом элементе, не предварительно размыв свой текущий фокус.Что бы вы ни пытались сделать, возможно, есть лучший способ.

Видимая регистрация событий: http://jsfiddle.net/Zk8Fg/3/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...