.attr ("отключено", "отключено") проблема - PullRequest
22 голосов
/ 09 июня 2010

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

$('.someElement').click(function(){     
  if (someCondition) {
     console.log($target.prev('input')) // gives out the right object
     $target.toggleClass('open').prev('input').attr('disabled', 'disabled');
  }else{
     $target.toggleClass('open').prev('input').removeAttr('disabled'); //this works
  }
})

removeAttr работает нормально, но когда мне нужно снова добавить отключенное, оно просто ничего не делает.Мой console.log запущен (и возвращает мне правильное поле ввода), поэтому я уверен, что мой оператор if работает.Но когда я проверяю DOM с помощью firebug в firefox, атрибут disabled не появляется.

Может ли кто-нибудь мне помочь?

PS: пожалуйста, не сосредотачивайтесь на функции или на самом операторе if, отлично работает, это просто тот атрибут, который не работает для инвалидов ...

edit : его тип ввода = "скрытый", возможно, что отключенный не работает на скрытых полях?

Ответы [ 7 ]

41 голосов
/ 09 июня 2010

Спасибо всем за ваш вклад! Я нашел проблему:

ЕГО ЖУКОВОЙ ЖУК !!!

Мой код работает. Я попросил PHP Dev изменить скрытые типы ввода для ввода типа текста. Отключенная функция работает. Но консоль Firebug не обновляет этот статус!

Вы можете сами проверить эту ошибку в Firebug здесь http://jsbin.com/uneti3/3#. Спасибо aSeptik за страницу примера.

обновление: 2. Июнь 2012: Firebug в FF11 все еще имеет эту ошибку.

8 голосов
/ 09 июня 2010

ОБНОВЛЕНО

ДЕМО: http://jsbin.com/uneti3/3

Ваш код неверен, должно быть что-то вроде этого:

 $(bla).click(function() { 
        var disable =  $target.toggleClass('open').hasClass('open');
       $target.prev().prop("disabled", disable);
  });

вы используете функцию toggleClass неправильно

7 голосов
/ 09 июня 2010

Попробуйте этот обновленный код:

$(bla).click(function(){        
  if (something) {
     console.log($target.prev("input")) // gives out the right object
     $target.toggleClass("open").prev("input").attr("disabled", "true");
  }else{
     $target.toggleClass("open").prev("input").removeAttr("disabled"); //this works
  }
})
2 голосов
/ 11 августа 2013

Я столкнулся с подобной проблемой при переключении отключенного состояния кнопки!После срабатывания removeProp('disabled') кнопка отказалась снова отключиться!Я нашел интересное решение: используйте prop("disabled",true) для отключения кнопки и prop("disabled",false) для ее повторного включения!Теперь я мог переключать «отключенное» состояние моей кнопки столько раз, сколько мне было нужно!Попробуйте.

0 голосов
/ 02 июня 2017

Чтобы добавить отключенный атрибут

$('#id').attr("disabled", "true");

Чтобы удалить отключенный атрибут

$('#id').removeAttr('disabled');
0 голосов
/ 11 марта 2017
$("#vp_code").textinput("enable");
$("#vp_code").textinput("disable");

Вы можете попробовать это

0 голосов
/ 09 июня 2010

Попробуйте

$(bla).click(function(){        
  if (something) {
     console.log("A:"+$target.prev("input")) // gives out the right object
     $target.toggleClass("open").prev("input").attr("disabled", "disabled");
  }else{
     console.log("A:"+$target.prev("input")) // any thing from there for a single click?
     $target.toggleClass("open").prev("input").removeAttr("disabled"); //this works
  }
});
...