2012-03-03 7 views
0

Я переписываю поле со списком на основе другого поля со списком. У меня есть 2 комбинированных блока, и когда я выбираю 01, тогда second combo включен, и когда я выбираю параметр от 2nd combo, появляется text box, а когда я выбираю 'пожалуйста, выберите' от first combo, тогда 2nd combo будет автоматически сброшен (отключен), но почему это текстовое поле не исчезает?скрыть текстовое поле, когда сбрасывается поле со списком

Если параметр кроме первого варианта выбирается из второго комбо, я заселение текстовое поле, как:

$(function() { 
    //This hides all initial textboxes 
    $('label').hide(); 
    $('#secondcombo').change(function() { 
     //This saves some time by caching the jquery value 
     var val = $(this).val(); 
     //this hides any boxes that the previous selection might have left open 
     $('label').hide(); 
     //This just opens the ones we want based off the selection 
     switch (val) { 
     case 'option1': 
     case 'option4': 
     case 'other': 
      $('#label1').show(); 
      break; 
     } 
    }); 
    //I'm not really sure why these are here 
    $("input").focus(function() { 
     $(this).next("span").fadeIn(500); 
    }).blur(function() { 
     $(this).next("span").fadeOut(1000); 
    }); 
});​ 

HTML

<select id='firstcombo'> 
    <option value="">please select</option> 
    <option value="01">01</option> 
    <option value="02">02</option> 
    </select> 

    <select id='secondcombo' disabled="true"> 
    <option value="_">- select -</option> 
    <option value="option1">data</option> 
    <option value="option2">data</option> 
    </select> 

    <label id="label1" for="option1"> 
     <input type="text" id="option1" /> 
    </label> 

ответ

1

Это не скрывается, потому что нет ни одного события для вашего первый комбо в этом коде.

Вы можете использовать ниже код, чтобы скрыть это

<select id='firstcombo' onchange="jQuery('label#label1').hide();"> 
    <option value="">please select</option> 
    <option value="01">01</option> 
    <option value="02">02</option> 
    </select> 

Это будет работать для вас.

+0

Это самый простой способ ... если вы хотите сделать что-то больше функциональных возможностей на это, то связать это как как второй комбо –

+0

благодаря Шивам, но если у меня есть больше чем один ярлык, который это label1, label2, label3 ... тогда как мне это изменить? jQuery ('label # label1'). hide(); '? – Tom

+0

@tom: вы можете использовать только' $ ('label'). hide () ', Если вы не уверены в идентификаторах, которые хранятся ваши метки. – codef0rmer

1

фотографии demo здесь

$(function() { 
    $('label').hide(); 
    $('#secondcombo').attr('disabled',true);  

    $('#firstcombo').change(function(){ 
     if($(this).val()===""){ 
      $('#secondcombo').attr('disabled',true); 
      $('label').hide(); //added this 
     }else{ 
      $('#secondcombo').attr('disabled',false); 
     } 
    }); 
    $('#secondcombo').change(function() { 
     $('label').hide(); 
     var val = $(this).val(); 
     switch (val) { 
     case 'option1': 
     case 'option4': 
     case 'other': 
      $('#label1').show(); //u can use fadeIn() here as well 
      break; 
     } 
    }); 
});​ 
+0

Да, это так же, но когда 1-я комбо сбрасывается, 2-я комбо отключена, но это текстовое поле не исчезает, я думаю, что в вашей скрипке требуется небольшая модификация, вы почти закончили – Tom

+0

http: // jsfiddle. net/cdMAH/1/должен работать для вас – frictionlesspulley

+0

да спасибо фрикционный пуло работает нормально !! – Tom

Смежные вопросы