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? Большое спасибо!
Ответы
Ответ 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.
Ответ 6
Вы пробовали с prop()??
Предполагается, что функция prop() кажется работает для меня.
Ответ 7
Здесь:
http://jsbin.com/urize4/edit
Live Preview
http://jsbin.com/urize4/
Вместо "readonly
" следует использовать:
$("input[type='text']").attr("readonly", "true");
Ответ 8
Моя проблема заключалась в том, что элемент, использующий отключенный attr, должен был быть определен как элемент формы. Введите тип ввода, чтобы он работал. Оба работали с attr() и prop(), но выбрали последний для будущей ремонтопригодности.
Ответ 9
В основном отключенный атрибут не работает с тегами привязки начиная с HTML-5 и далее. Следовательно, мы должны изменить его, скажем, "кнопка" и стилизовать его соответствующим цветом, в стиле рамки и т.д., С которым наиболее подходящее решение для любой аналогичной проблемы пользователи сталкиваются в Chrome. Только несколько элементов поддерживают атрибут 'disabled': Span, select, option, textarea, input, button.