Снять атрибут 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, время: 14:44. |