Jquery отключить ввод с помощью attr () - PullRequest
2 голосов
/ 27 июля 2010

У меня поведение при подключении, когда я пытаюсь отключить или прочитать только поле ввода с помощью attr ().

removeAttr('disabled') работает нормально.

attr('name', 'somthing') работает

attr('id', 'something else') работает

attr('disabled','disabled') не работает -> пишетonly disabled = "" в DOM и не отключает поле ввода

attr('readonly','readonly') не работает -> в DOM записывается только readonly = "", но поле ввода все еще можно редактировать.

$(document).ready(function() {

    $("input[name='rdio']").live('click', function() {
        $(".radio_select").find("input[name='rdio']").each(function(){
            if(this.checked)
            {
                $("#"+this.value).removeAttr('disabled');        
            }
            else
            {
                $("#"+this.value).attr('disabled','disabled');
            }
        });
    });
});

Кто-нибудь сталкивался с таким поведением?Кстати, я использую jquery 1.4.2

РЕДАКТИРОВАТЬ: Извините, это было то, что я попытался и забыл вернуть его.Так что с attr () проблема сохраняется.

Ответы [ 6 ]

2 голосов
/ 27 июля 2010

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

Так что синтаксически

<select disabled></select>

просто отлично и правильно.Никаких значений не требуется.

К сожалению, нет способа создать такую ​​конструкцию с помощью javascript (если вы не хотите перезаписывать html), поэтому вы вынуждены добавить некоторое значение.Поскольку оба свойства булевы, вы можете добавить практически все, что угодно..attr('disabled', 'foobar') так же хорошо, как .attr('disabled', true).

1 голос
/ 27 июля 2010

Попробуйте использовать-

$('#target').attr("disabled", true);
$('#target').attr("readonly", true);
0 голосов
/ 29 мая 2014

@ OP: Я подозреваю, что кнопка функционально отключена, но визуально не отключена.

У меня были точно такие же симптомы. Использование attr ('disabled', 'disabled') привело к отключению = "" в DOM. Кнопка была фактически отключена, так как она больше не генерировала событие нажатия и не отправляла форму. Однако это все еще было выделено, как будто это было.

Причиной был CSS для кнопки, которая содержала псевдоселектор ': active'. Это применяется, даже если кнопка отключена. Добавление ': not ([DISABLED])' к активному убрало вводящую в заблуждение подсветку.

Любой пользователь Drupal имеет тему CSS, а Seven - административная тема по умолчанию.

Я подтвердил это в FF и Chrome.

0 голосов
/ 27 июля 2010

Выполнение .attr('disabled', true/false); и то же самое с readonly - самый быстрый подход. Однако помните, что если элемент «отключен», он не будет отображаться в отправляемых данных форм, тогда как readonly будет отображаться в данных публикации. Это распространенная ловушка для разработчиков, желающих отключить ввод, но затем удивляются, почему они не получают свои $_POST данные в PHP.

Просто немного на голову!

0 голосов
/ 27 июля 2010

.attr('disabled', 'disabled'); делает хорошую работу.

Спецификация W3C говорит, что вы должны установить атрибут без значения.Но это проблема функции jquery attr ().Вы не можете установить атрибут без значения.

Он записывает disabled="" в DOM.Но он работает довольно хорошо.

Смотрите здесь: http://www.w3schools.com/tags/att_input_disabled.asp

0 голосов
/ 27 июля 2010

Я думаю, что это должно быть так

attr('disabled', true);

и то же самое только для чтения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...