IE не обнаруживает метод изменения jquery для флажка
Код ниже работает в FF, Safari, Chrome. Но IE дает мне проблемы.
Если флажок установлен, я не могу заставить IE его обнаружить.
$("#checkbox_ID").change(function(){
if($('#'+$(this).attr("id")).is(':checked'))
{
var value = "1";
}
else
{
var value = "0";
}
alert(value);
return false;
});
Просто, я не получаю всплывающее окно с предупреждением, как и ожидалось.
Я даже пробовал это так:
$("#checkbox_ID").change(function(){
if( $('#'+$(this).attr("id")'+:checked').attr('checked',false))
{
var value = "1";
}
else
{
var value = "0";
}
alert(value);
return false;
});
Здесь простой ввод флажка: <input class="prod" type="checkbox" name="checkbox_ID" id="checkbox_ID" value="1"/>
Кто-нибудь знает, нужен ли IE другой метод jquery? или мой код просто выключен?
Ответы
Ответ 1
Как отмечено sblom с IE7 и ниже, вам нужен элемент для размытия для этого действия для запуска, более поздние версии IE и других браузеров не нуждаются в элементе, чтобы явно потерять фокус, просто изменение должно запустить это событие (как показано на рисунке в моем примере ниже).
Я считаю, что ваша проблема может заключаться в том, что вы пытаетесь получить доступ к переменной "value", когда она выходит за рамки.
$("#checkbox_ID").change(function(){
var value;
if($(this).is(':checked'))
{
value = "1";
}
else
{
value = "0";
}
alert(value);
return false;
});
Вот рабочий предварительный просмотр, обратите внимание, что, поскольку вы возвращаете false в конце функции, он сбрасывает флажок до своего предыдущего значения, поскольку вы отменили эффект нажатия.
Ответ 2
Это, вероятно, будет работать, если вы щелкнете в другом месте после того, как вы установите флажок. IE такой странный.
Можете попробовать что-то вроде:
$(function () {
if ($.browser.msie) {
$('input:checkbox').click(function () {
this.blur();
this.focus();
});
Дополнительная информация здесь: http://norman.walsh.name/2009/03/24/jQueryIE
Ответ 3
Событие изменения запускается только тогда, когда значение изменяется после того, как управление теряет фокус. Для флажка лучше подключиться к событию click.
Вот документация о том, когда происходит событие onchange: текст ссылки
Ответ 4
Вам нужно использовать событие propertychange
вместо события change
. Имейте в виду, что событие propertychange
будет срабатывать не по проверке/снятию флажка. Чтобы компенсировать это, вы должны проверить window.event.propertyName
(только для IE):
$(':checkbox').bind($.browser.msie ? 'propertychange': 'change', function(e) {
if (e.type == "change" || (e.type == "propertychange" && window.event.propertyName == "checked")) {
// your code here
}
});
Ответ 5
попробуйте использовать
jQuery('#checkbox').click(handleFunc);
вместо события "change"