Если флажок установлен, удалить атрибут?

0
<div class="span1">
     <input type="checkbox" value="l4" id="l4" field="" defaultValue="" appEditor="true"/>
</div>

<div class="span7">
     <input type="text" class="m-wrap span10" id="fld_l4" defaultValue="" editType="intEdit" appEditor="true" disabled />
</div>

Что я хочу сделать, это: Если флажок установлен, удалите отключенный в fld_l4.

Как это сделать с использованием Prototype.js или jQuery?

EDIT: Я использую прототип с jQuery, я получаю сообщение об ошибке: Uncaught InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable. Кстати, я заменил $ на jQuery для конфликтов

EDIT2: Решено.

this.l4     = editor.instance;
editor.observe(iconstants.KEY_CHANGE,this.levelCheckboxChanged.bindAsEventListener(this))

Внутри levelCheckboxChanged:

levelCheckboxChanged: function(e) {

    if($("l4").checked == false) {
        $("fld_l4").disabled = true;
    } else {
        $("fld_l4").disabled = false;
    }
},
  • 0
    Проверьте это, если хотите отключить jsfiddle.net/Alfie/suB2N
Теги:
prototypejs

5 ответов

1
Лучший ответ

Вот как это сделать с PrototypeJS

внутри вашего загруженного DOM-события

document.observe('dom:loaded',function(){

    $('l4').observe('click',function(){
        $('fld_l4').writeAttribute('disabled',this.checked);
    });

});

Кроме того, вы можете изменить идентификатор "14", браузеру не нравится, когда вы начинаете идентификатор с номерами - они позволяют вам это делать, но он не является частью спецификации HTML

  • 0
    Спасибо за подсказку, и, кстати, это не 14 (четырнадцать), это 14. 1 и l очень похожи в этом шрифте :)
  • 0
    ах да вижу - отредактировал мой пост чтобы это исправить
Показать ещё 1 комментарий
2

Вы можете сделать это так

$('#l4').change(function(){
if(this.checked){
$("#fld_l4").removeAttr('disabled');
 }    
})

Демо-ссылка

  • 0
    См редактировать пожалуйста
2

Этот путь должен работать:

$("#l4").on("change", function () {
    $("#fld_l4").prop("disabled", !$(this).is(":checked"));
});

jsFiddle: http://jsfiddle.net/J5Nt2/1/

  • 0
    См редактировать пожалуйста
  • 0
    Это будет работать точно так же. Нужны действительно небольшие изменения. Обновил ответ.
Показать ещё 6 комментариев
1

Попробуй это,

if( $("#l4:checked").length ) {
    $("#fld_l4").removeAttr("disabled");
}
0

Попробуй это:

if( $("#l4").is(":checked") ) {  
   $('#fld_l4').removeAttr('disabled');
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню