Код ниже работ в 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? или мой код рядом с?
Как отмечалось sblom с IE7 и ниже, вам нужно, чтобы элемент размывался, чтобы это действие сработало, более поздние версии IE и других браузеров не нуждаются в элементе для явной потери фокуса, простое изменение должно вызвать это событие (как показано в моем примере ниже).
Я считаю, что ваша проблема может заключаться в том, что вы пытаетесь получить доступ к переменной «значение», когда она находится вне области видимости.
$("#checkbox_ID").change(function(){
var value;
if($(this).is(':checked'))
{
value = "1";
}
else
{
value = "0";
}
alert(value);
return false;
});
Вот рабочий предварительный просмотр , обратите внимание, что поскольку вы возвращаете false в конце функции, он сбрасывает флажок до его предыдущего значения, поскольку вы отменили эффект щелчка.
Событие изменения срабатывает только тогда, когда значение изменяется после того, как элемент управления теряет фокус. Для флажка лучше подключиться к событию щелчка.
Вот документация о том, когда возникает событие onchange: текст ссылки
Вероятно, это сработает если вы щелкнете в другом месте после установки флажка. IE такой странный.
Можно попробовать что-нибудь вроде:
$(function () {
if ($.browser.msie) {
$('input:checkbox').click(function () {
this.blur();
this.focus();
});
Подробнее здесь: http://norman.walsh.name/2009/03/24/jQueryIE
Вам нужно использовать событие 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
}
});