[英]disable/enable text-box depending on check-boxes
我正在使用cakePHP框架来处理我的项目。
如何在选中复选框时启用文本框,而在未选中复选框时将其禁用? 我尝试使用javascript,但无法正常运行,我认为这是因为我的“ id”。 我应该如何声明我的“身份证”?
这是我的代码。 它在forLoop中。
echo $this->Form->checkbox('menu_item_id',
array(
'value' => $items[$i]['MenuItem']['menu_item_id'],
'hiddenField' => false,
'name' => 'data[OrderItem][menu_item_id][]',
'label' => false,
'div' => false,
)
);
echo $this->Form->input('quantity',
array(
'style'=>'width:65px; height:25px;',
'name' => 'data[OrderItem][quantity][]',
'div' => false,
'label' => false
)
);
echo $this->Form->input('notes',
array(
'style'=>'width:65px; height:25px;',
'name' => 'data[OrderItem][notes][]',
'div' => false,
'label' => false
)
);
顺便说一下,我是CakePHP和Javascript的初学者。 谢谢。
我做了一些改变。 在我的脚本中,我添加了这个
function changeStatus(){
if(document.getElementById("my_checkbox").checked == true){
document.getElementById("input_field").disabled= false;
alert('a');
} else {
document.getElementById("input_field").disabled= true;
alert("B");
}
}
*警报仅供测试。 它会转到适当的块,但不会启用/禁用文本字段。 你知道为什么吗?
通过dfault cakephp将id分配给任何具有常规约定的元素,即UsersMenuItemId
(我假设用户是您的模型)。 但是您可以将id与其他htmlOptions一起分配
echo $this->Form->checkbox('menu_item_id',
array(
'id' => 'my_checkbox',
'value' => $items[$i]['MenuItem']['menu_item_id'],
'hiddenField' => false,
'name' => 'data[OrderItem][menu_item_id][]',
'label' => false,
'div' => false,
)
);
现在编写一个基本脚本:
<script>
$(document).ready(function(){
$('#my_checkbox').event('click', function(){
if($('#my_checkbox').is(':checked')){
$('#input_field').removeAttr('disabled');
} else {
$('#input_field').attr('disabled','disabled');
}
});
});
</script>
在复选框数组=>添加
"onclick'=>'changeStatus(this);"
如果此关键字不适合您,则将其替换为复选框ID“ menu_item_id”
然后编写normail javascript函数以禁用输入框
function changeStatus(obj){ if(obj.checked){ document.getElementById("quantity").disabled =true; }
单行JS用于下面的行,它将在两种状态之间切换
document.getElementById("quantity").disabled =obj.checked;
更新 :检查以下代码是否对您有用
echo $this->Form->checkbox('menu_item_id_'.$i, array( 'value' => $items[$i]['MenuItem']['menu_item_id'], 'hiddenField' => false, 'name' => 'data[OrderItem][menu_item_id][]', 'label' => false, 'div' => false, "onclick'=>'changeStatus(this,$i);" ) ); echo $this->Form->input('quantity_'.$i, array( 'style'=>'width:65px; height:25px;', 'name' => 'data[OrderItem][quantity][]', 'div' => false, 'label' => false ) ); function changeStatus(obj,index){ document.getElementById("quantity_"+index).disabled = ! obj.checked; }
echo $this->Form->checkbox('menu_item_id',
array(
'value' => $items[$i]['MenuItem']['menu_item_id'],
'hiddenField' => false,
'name' => 'data[OrderItem][menu_item_id][]',
'label' => false,
'div' => false,
)
);
在这里,您声明为“ menu_item_id”的第一个字段用于表名称,或者我们可以说模型名称。
有不同的方法可以为输入分配ID,例如:
echo $this->Form->checkbox('modelname',
array(
'value' => $items[$i]['MenuItem']['menu_item_id'],
'hiddenField' => false,
'name' => 'data[OrderItem][menu_item_id][]',
'label' => false,
'div' => false,
'id'=>'your-id'
)
);
但请记住,id在页面上必须是唯一的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.