Снять атрибут disabled
Возникла небольшая проблема с формой обратной связи
с помощью нижеприведенного скрипта скрываются\показываются необходимые поля Чтобы на сервер не уходило ошибочно выбранное значение присваиваю атрибут disabled, но если опять вернуться к выбору этого пункта - атрибут disabled не снимается Как сделать чтобы инпут опять становился активным? $('#from').live('change', function () { if ($('#from').val() == 'address') { $('#infoaddress').show(); // эта конструкция не работает $('#infoaddress').removeAttr("disabled"); } else { $('#infoaddress').hide(); $('#infoaddress input').attr("disabled","disabled"); } |
Цитата:
Может так? ('#infoaddress')[0].disabled = false; |
Потому что атрибут и свойство - две большие разницы.
Либо как Ruslan_xDD предложил, либо jquery-way: $('#infoaddress').prop('disabled', false); |
Цитата:
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <!-- <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> $(function (){ $('#off').click(function (){ $('input').attr('disabled',true); }); $('#on').click(function (){ $('input').removeAttr('disabled'); }); }); </script> </head> <body> <div> <input type='text' /> <input type='button' value='test' /> </div> <button id='off'>off</button> <button id='on'>on</button> </body> </html> Таки работает! :D |
ksa, судя по "live" код старый, и версия jQuery тоже. А между тем, "баг" пофиксили в версии 1.7.2 : http://bugs.jquery.com/ticket/10870
Причем по сути это не баг, а "неожиданность" для тех, кто плохо знает DOM (хотя нужно учесть что .prop() в jQuery появился не сразу) |
live заменил на on
$('#from').on('change', function () { if ($('#from').val() == 'address') { $('#infoaddress').show(); $('#infoaddress input').prop('disabled', false); } else { $('#infoaddress').hide(); $('#infoaddress input').prop('disabled', true); } такая конструкция хорошо работает если использовать removeAttr, то работает только один раз Спасибо большое за помощь Еще ввело в заблуждение - в файрбаге не показывает, что навешивается атрибут |
Цитата:
|
alexmixaylov, разве не видишь что код дублируется. Это не есть хорошо.
$('#from').on('change', function () { var isAddress = this.value == 'address'; $('#infoaddress').toggle(isAddress); $('#infoaddress input').prop('disabled', !isAddress); }); |
Можно даже так упростить:
$('#from').on('change', function () { var isAddress = this.value == 'address'; $('#infoaddress').toggle(isAddress).find('input').prop('disabled', !isAddress); }); |
Часовой пояс GMT +3, время: 08:07. |