我有一个包含下拉字段的表单。下拉列表的选项基于单选按钮选择。
单选按钮
<?php
$list=array("1"=>"Assign to Department","2"=>"Assign to user");
echo $form->field($model, 'option')->radioList($list,
[
'template' => '{input}{label}', // put the label behind
]);
?>
脚本
<script>
$('input[type=radio]').click(function(){
var Flag=this.value;
if(Flag=='1') {
'<?php $items= ArrayHelper::map($company->Users, 'id', 'fullname');?>';
} else if(Flag=='2') {
'<?php $items= ArrayHelper::map(Department::find()->all(), 'dep_id', 'name'); ?>';
}
alert(Flag);
});
</script>
Drodown
<?php
echo $form->field($model, 'assignee')
->dropDownList(
$items, // Flat array ('id'=>'label')
['prompt'=>''] // options
)->label('');
?>
预期响应是根据下拉选择更改选项值。但即使单选按钮和单击更改的标记值不同,它也不会更改。
有什么想法吗?
答案 0 :(得分:2)
我试过这个样本并且有效 -
<?php
$items1 = range(0, 5); //PHP Array 1
$items2 = range(5, 10); //PHP Array 2
?>
<script>
var arr1 = <?php echo json_encode($items1); ?>; //Javascript Array 1
var arr2 = <?php echo json_encode($items2); ?>; //Javascript Array 2
$(document).ready(function() {
$('input[type=radio]').click(function(){
var Flag = this.value;
setDropdown(Flag);
});
});
function setDropdown(Flag) {
var elem = $('#Skill_order_no'); //Your dropdown element name.
if(Flag == '1') {
elem.empty();
$.each(arr1, function(index, value) {
elem.append($('<option>').text(value).attr('value', value));
});
} else if(Flag == '2') {
elem.empty();
$.each(arr2, function(index, value) {
elem.append($('<option>').text(value).attr('value', value));
});
}
}
</script>