JQuery Focus () с проблемой флажков - PullRequest
2 голосов
/ 19 августа 2011

Мы используем пользовательский плагин jquery для обработки всплывающих подсказок, когда пользователи фокусируются на полях ввода. Однако я наткнулся на странную проблему. Плагин использует следующий код для вызова всплывающей подсказки:

$(this).focus(function(){
    // Show popup help panel here
});

Однако, если этот код применяется к входу, где type = "checkbox", всплывающее окно справки отображается, но значение этого флажка быстро отменяется, поэтому кажется, что оно не изменилось с отмеченного галочкой на наоборот Это происходит в IE9 и FF6 (не пробовал в других браузерах). Я попробовал этот очень простой код, чтобы убедиться, что я не схожу с ума, и проблема все еще возникла:

... В html:

<input id="test" type="checkbox" checked="checked" />

... В голове - javascript

$('#test').focus(function(){
    alert("help!");
});

Предупреждение отображается, но значение флажка не изменилось (или было изменено, но затем изменено обратно, как мне кажется, происходит).

Может ли кто-нибудь пролить свет на это.

Ответы [ 2 ]

3 голосов
/ 19 августа 2011

Зачем связывать 'focus' для флажка?

Это не имеет большого смысла для меня, так как «фокус» в первую очередь для текстовых полей или текстовых областей.Я бы использовал .click или .change вместо этого, я подозреваю, что вам повезет больше.в Chrome. Я подозреваю, что в IE / FF происходит какое-то странное событие, которое не распространяется на сам элемент управления при фокусировке.

0 голосов
/ 19 августа 2011

focus не изменит свойство checked флажка. Вы должны полностью изменить его проверенное свойство. Как то так.

$('#test').focus(function(){
    this.checked = !this.checked;
});
...