JQuery: проверка отключенного атрибута и его добавление/удаление?

Я выбираю все входные элементы формы следующим образом:

var fields = $( form + " :input" ).not( "button" );

Как проверить, установлен ли какой-либо из этих входов атрибут disabled и удалить его при наличии?

Кроме того, мне нужно добавить его после удаления (и сериализовать поля между ними), есть ли элегантный способ для этого? Что-то вроде toggle, но для атрибутов?

Ответ 1

Предполагая, что вы используете jQuery 1.6 или выше, предлагаемый метод заключается в использовании .prop().

fields.prop("disabled", false);

Если вам нужна логика вокруг каждого из них, вы можете сделать что-то в степени

var fields = $( form + " :input" ).not( "button" );
fields.each(function(index, element) {
    var isDisabled = $(element).is(':disabled');
    if (isDisabled) {
        $(element).prop('disabled', false);
    } else {
        // Handle input is not disabled
    }
});

jsfiddle

Ответ 3

Вы можете использовать селектор disabled

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

Смотрите здесь

http://jsfiddle.net/JngR9/

Ответ 4

Удалить

$('input:disabled').removeProp('disabled');

или

$('input:disabled').prop('disabled', 'disabled');

Добавить

$('input:disabled').prop('disabled', 'disabled');