Подтвердить что ты не робот

JQuery.attr( "отключено", "отключено" ) не работает в Chrome

Не знаю, почему это не работает.

Когда люди нажимают кнопку "Изменить" моего приложения, отключенные текстовые поля становятся редактируемыми:

$("#bewerken").click(function(e)    {
    $("input[disabled='disabled']").removeAttr('disabled');
});

Затем я хочу снова отключить текстовые поля, когда пользователь сохранит; У меня этот код привязан к моей кнопке сохранения:

$("#save_school_changes").click(function(e) {
    //stuff

    $.ajax({
        type: "POST",
        url: "/school/save_changes",
        data: { //stuff },
        success: function(data)
        {
            $("#feedback_top").html("<p>" + data['message'] + "</p>").slideDown('slow').delay(2000).slideUp();
            $("input[type='text']").attr('disabled', 'disabled');

        }
    });

    e.preventDefault();
});

Насколько я знаю, это должно снова отключить текстовые поля. Однако, похоже, это не работает в Chrome. Он работает в Firefox. У меня еще не было возможности протестировать IE или Safari. Есть ли способ сделать эту работу в Chrome? Большое спасибо!

4b9b3361

Ответ 1

Если вы используете jQuery <1.6, сделайте это:

jQuery("input[type='text']").attr("disabled", 'disabled');

Если вы используете jQuery 1. 6+:

jQuery("input[type='text']").prop("disabled", true);

Посмотрите этот вопрос: .prop() vs.attr() для ссылок почему.

Или вы можете попробовать это:

$('input:text').attr("disabled", 'disabled');

см. здесь для получения информации о :text

Ответ 2

Для меня ни один из этих ответов не работал, но я, наконец, нашел тот, который сделал.

Мне это нужно для IE -

$('input:text').attr("disabled", 'disabled');

Мне также пришлось добавить это для Chrome и Firefox -

$('input:text').AddClass("notactive");

и это -

<style type="text/css">
    .notactive {
        pointer-events: none;
        cursor: default;
    }
 </style>

Ответ 3

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

У меня была такая же проблема.

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

Мое решение состояло в том, чтобы отключить каждый дочерний объект, а не только usercontrol, с помощью этого кода:

$('#controlName').find('*').each(function () { $(this).attr("disabled", true); })

Теперь он работает для меня в хроме.

Ответ 4

Попробуйте $("input[type='text']").attr('disabled', true);

Ответ 5

если вы удаляете все отключенные атрибуты из ввода, то почему бы просто не сделать:

$("input").removeAttr('disabled');

Затем после успеха ajax:

$("input[type='text']").attr('disabled', true);

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

Ответ 8

Моя проблема заключалась в том, что элемент, использующий отключенный attr, должен был быть определен как элемент формы. Введите тип ввода, чтобы он работал. Оба работали с attr() и prop(), но выбрали последний для будущей ремонтопригодности.

Ответ 9

В основном отключенный атрибут не работает с тегами привязки начиная с HTML-5 и далее. Следовательно, мы должны изменить его, скажем, "кнопка" и стилизовать его соответствующим цветом, в стиле рамки и т.д., С которым наиболее подходящее решение для любой аналогичной проблемы пользователи сталкиваются в Chrome. Только несколько элементов поддерживают атрибут 'disabled': Span, select, option, textarea, input, button.