Флажок, не работающий правильно на IE с jQuery

При использовании предварительного просмотра MVC 4 Вы могли бы испытывать это, потому что Вы используете HandleErrorAttribute. Поведение изменилось в 5 так, чтобы оно не обрабатывало исключения, если Вы выключаете пользовательские ошибки.

6
задан carillonator 4 December 2009 в 16:18
поделиться

4 ответа

У меня были аналогичные проблемы с включением в Internet Explorer с помощью jQuery. Следующий код отлично работал в FireFox.

$('myCheckBox').removeAttr('disabled');

Однако это не работало должным образом в IE.

отображается как с и . Когда флажок отключен, теги span и input украшаются атрибутом disabled. Чтобы получить ожидаемое поведение, я использовал следующий код:

$('myCheckBox').removeAttr('disabled');
$('myCheckBox').closest('span').removeAttr('disabled');
13
ответ дан 8 December 2019 в 18:37
поделиться

Здесь есть множество избыточных селекторов, которые будут выполнять эту функцию очень неэффективно. Во-первых, выполнение запросов для селекторов выполняется очень медленно по сравнению с остальной частью кода, поэтому кешируйте результат своего селектора и работайте над этим. Кроме того, вы должны объявить i с оператором var , чтобы сделать его локальным для вашей функции. И там' s нет необходимости, чтобы jQuery получал элемент по его идентификатору или этот глубоко сбивающий с толку материал, чтобы получить и установить его отключенный статус, что можно сделать гораздо проще с помощью логического свойства DOM disabled . Все это говорит о том, что я действительно не знаю, почему ваш код не работает, но сделать его читабельным и простым определенно поможет.

function checkChild(id) {
    var input, checkBox, parts, inputs = $("input[id*=hdnParentMenuItemID]");
    for (var i = 0, len = inputs.length; i < len; i++) {
        input = inputs[i];
        parts = input.value.split(':');
        if (parts[0] == id) {
            checkBox = document.getElementById( parts[1] );
            checkBox.disabled = !checkBox.disabled;
        }
    }
}
0
ответ дан 8 December 2019 в 18:37
поделиться

Вам нужен оператор if, подобный этому

if ($("#" + childID + ":disabled").length) // is childID disabled?
    $("#" + childID).removeAttr("disabled"); // enable it
else
    $("#" + childID).attr('disabled', 'disabled'); // disable it
0
ответ дан 8 December 2019 в 18:37
поделиться

Это должно по умолчанию. work

$('#' + childID)[0].disabled = false;
0
ответ дан 8 December 2019 в 18:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: