2013-12-09 6 views
0

에서 변경하고 싶습니다. 제가 알고 싶은 것은 jQuery를 사용하여 dropDownlist 변경시 textField 또는 dropDownList를 변경하고 싶습니다. 유형 I은 이름을 텍스트 필드 또는 이름 드롭 다운리스트를 표시 할 드롭 다운리스트의 변경 기능에 따라yii의 필드를

내가 다른 DropDownList로이
<?php echo $form->dropDownList($model,'name',array('prompt'=>'Select')); ?> 
           OR 
<?php echo $form->textField($model,'name',array('size'=>60,'maxlength'=>100)); ?> 

,

<?php echo $form->dropDownList($model,'type', array('car'=>'Car', 'train'=>'Train', 'cruise'=>'Cruise', 'airline'=>'Airline'), array('prompt'=>'Select Type')); ?> 

는 자신의 분야는 동일하지만 난 돈 ' 그 일을 알고있다. 내 jquery는 다음과 같습니다.

$(document).ready(function() { 
    $('#Transport_type').change(function() { 
     var trantype = $('#Transport_type').val();  
     if(trantype == 'car' || trantype == 'train'){ 
      //Here I wanna show dropdownlist    
     }else if(trantype == 'cruise' || trantype == 'airline'){ 
      //Here I wanna show textfield 
     } 
     }); 
    }); 

누군가 도움이된다면 좋을 것입니다. 감사!

답변

0
<?php echo $form->dropDownList($model,'name',array('prompt'=>'Select'),array('style'=>'display:none;')); ?> 
           OR 
<?php echo $form->textField($model,'name',array('size'=>60,'maxlength'=>100,style'=>'display:none;')); ?> 

나는이

<?php echo $form->dropDownList($model,'type', array('car'=>'Car', 'train'=>'Train', 'cruise'=>'Cruise', 'airline'=>'Airline'), array('prompt'=>'Select Type')); ?> 

그런 다음 당신이 작성했습니다 것은 정확하고 숨길하기 위해

$(document).ready(function() { 
    $('#Transport_type').change(function() { 
     var trantype = $(this).val();  
     if(trantype == 'car' || trantype == 'train'){ 
      $('#dropdownid').show(); 
     }else if(trantype == 'cruise' || trantype == 'airline'){ 
      $('#textboxid').show(); 
     } 
     }); 
    }); 
+0

그러나 동일한 필드이므로 해당 ID가 동일합니다. 하지만 드롭 다운 목록의 변경 유형에 드롭 다운 목록 또는 텍스트 필드로 표시하고 싶습니다. – Thyu

+0

더 나은 클래스 이름 사용 $ ('. textboxclassname'). show(); –

0

내가 아주 작은 변화, 비슷한 일을 할 것입니다 작동 변경하는 경우 표시해서는 안되는 드롭 다운입니다.

$(document).ready(function() { 
    $('#Transport_type').change(function() { 
     var trantype = $(this).val();  
     if(trantype == 'car' || trantype == 'train'){ 
      $('#dropdownid').show(); 
      $('#textboxid').hide(); 
     }else if(trantype == 'cruise' || trantype == 'airline'){ 
      $('#textboxid').show(); 
      $('#dropdownid').hide() 
     } 
     }); 
    }); 

모델을 사용하는 경우 자동 생성 된 ID를 바꿀 수도 있습니다.

이렇게하면 양식 ID가 자동으로 생성되는 방식을 변경하는 프레임 워크의 변경 사항을 코드에서 보호하게됩니다.

ID가 동일하면이 문제를 해결하기 위해 JQuery를 사용하여 유형 변경시 en 요소를 추가하고 파괴하고 작성/삭제해야합니다. 당신이 비활성 YII 양식 필드를 사용하지 않는 경우

http://api.jquery.com/prepend/

0

당신은 데이터를 게시 할 수 없습니다.

jQuery를 사용하여 한 가지를 추가하면 쉽게 수행 할 수 있습니다. 즉, 비활성화 된 yii 양식 필드에 "DISABLED" 속성을 사용합니다. 그렇다면이 점을 고려하지 않을 것입니다. 또한, 처음에는 양식이로드 될 때 유형 변경 드롭 다운에 표시 될 양식 필드를 비활성화하십시오.

또한 모델의 이름 필드에서 "REQUIRED"을 제거해야하며 Yii 양식의 유효성 검사에 앞서 javascript/jquery를 사용해야합니다.

HTML :

<div id="dropdownId"> 
<?php echo $form->dropDownList($model,'name',array('prompt'=>'Select')); ?> 
</div> 

<div style="display:none;" id="textboxId"> 
<?php echo $form->textField($model,'name',array('size'=>60,'maxlength'=>100,'disabled'=>'disabled')); ?> 
</div> 

<?php echo $form->error($model, 'name'); ?> 

JQuery와 :

$('#Transport_type').change(function() { 
    var trantype = $('#Transport_type').val();  
    if(trantype == 'car' || trantype == 'train'){ 
     //Here I wanna show dropdownlist  
     $("#dropdownId").show(); 
     $("#textboxId").hide(); 
     $("#textboxId input").prop("disabled",true); 
     $("#dropdownId select").prop("disabled",false); 
    }else if(trantype == 'cruise' || trantype == 'airline'){ 
     //Here I wanna show textfield 
     $("#textboxId").show(); 
     $("#dropdownId").hide(); 
     $("#dropdownId select").prop("disabled",true); 
     $("#textboxId input").prop("disabled",false); 
    } 
    }); 

나는 희망이 도움이됩니다.감사합니다

0
<script> 
jQuery(document).ready(function() { 
    $('#Transport_type').change(function() { 
     var trantype = $('#Transport_type').val();  
     if(trantype == 'car' || trantype == 'train'){ 
      $('input#Transport_name').show();   
      $('select#Transport_name').hide();   
     }else if(trantype == 'cruise' || trantype == 'airline'){ 
      $('input#Transport_name').hide();   
      $('select#Transport_name').show(); 
     } 
     }); 
    }); 
</script> 

시도해보십시오.