Jquery 要将yii中的字段从更改为

Jquery 要将yii中的字段从更改为,jquery,yii,Jquery,Yii,我想知道的是,我想使用jQuery更改textField或dropDownList上的dropDownList <?php echo $form->dropDownList($model,'name',array('prompt'=>'Select')); ?> OR <?php echo $form->textField($model,'name',array('size'=>60,'ma

我想知道的是,我想使用jQuery更改textField或dropDownList上的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,'name',array('prompt'=>'Select'),array('style'=>'display:none;')); ?>
                                OR
<?php echo $form->textField($model,'name',array('size'=>60,'maxlength'=>100,style'=>'display:none;')); ?>
$(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

$(document).ready(function() {
     $("#<?php echo CHtml::activeId($model, "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()
        }
      });
   });
$(文档).ready(函数(){
$(“#”)更改(函数(){
var trantype=$(this.val();
如果(trantype='car'| | trantype=='train'){
$('#dropdownid').show();
$('#textboxid').hide();
}否则如果(trantype=='cruise'| | trantype=='airline'){
$('#textboxid').show();
$('#dropdownid').hide()
}
});
});
通过这样做,您可以保护您的代码,以防框架上的更改会改变表单ID的自动生成方式

$(document).ready(function() {
     $("#<?php echo CHtml::activeId($model, "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相同,则应在更改类型时使用JQuery append and destroy和destroy/create en元素来解决此问题


如果不禁用非活动的Yii表单字段,您将无法发布数据

通过使用jQuery添加一件事情,您可以轻松做到这一点。也就是说,对处于非活动状态的yii表单字段使用“禁用”属性。那么,这就不算了。另外,首先,当表单加载时,禁用将在类型更改下拉列表中显示的表单字段

此外,您必须从模型中的name字段中删除“REQUIRED”,并且可以在验证Yii表单之前使用javascript/jquery将其设置为REQUIRED

HTML:

我希望,这会有帮助。谢谢


<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>
jQuery(文档).ready(函数(){ $(“#传输类型”)。更改(函数(){ var-trantype=$(“#传输类型”).val(); 如果(trantype='car'| | trantype=='train'){ $('input#Transport_name').show(); $('select#Transport_name').hide(); }否则如果(trantype=='cruise'| | trantype=='airline'){ $('input#Transport_name').hide(); $('select#Transport_name')。show(); } }); });

试试这个。

但是它们的ID是相同的,因为它们是相同的字段。但我想在输入dropdownlist的更改时显示为dropdownlist或textfield。
$(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()
        }
      });
   });
$(document).ready(function() {
     $("#<?php echo CHtml::activeId($model, "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()
        }
      });
   });
<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'); ?> 
$('#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);
    }
  });
<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>