我正在研究ZF2,我正在尝试使用javascript设置两个相关的下拉列表。当火灾发生变化时,我开始尝试隐藏第二个选择字段中的所有选项。
这是我的表格:
$this->add(array(
'type' => 'Zend\Form\Element\Select',
'name' => 'category_list',
'options' => array(
'label' => 'Event category ',
'style' => 'display:none;',
'value_options' => array(
),
),
'attributes'=> array(
'id'=>'list1',
'onchange'=>'hide()'
)
));
$this->add(array(
'type' => 'Zend\Form\Element\Select',
'name' => 'subcateg_list',
'options' => array(
'label' => 'Type Incident ',
'style' => 'display:none;',
'value_options' => array(
)),
'attributes'=> array(
'id'=>'list2'
)
));
请注意,选择字段在控制器类上填充!
这是我的Javascript功能:
function hide()
{
var op = document.getElementById("list2").getElementsByTagName("option");
for (var i = 0; i < op.length; i++) {
? op[i].disabled = true
: op[i].disabled = false ;
}
}
但是当第一个选择字段改变时,什么都没有。那问题出在哪里?
答案 0 :(得分:1)
您的代码应该抛出语法错误。三元运算符(?:)期望检查条件。 请参阅:http://en.wikipedia.org/wiki/%3F:#JavaScript
(condition) ? alert('true') : alert('false');
正如Fouad Fodail建议的那样 - &gt;一个jQuery示例:
function hide()
{
$('#list2 option').each(function() {
$(this).prop('disabled', condition);
// ^-- Do not forget to change this
});
}
注意: Internet Explorer 7及更早版本不支持标记的disabled属性。
(http://www.w3schools.com/tags/att_option_disabled.asp)
另一个示例,如果第一个<select id="select2">
已更改,则会停用第二个<select id="select1">
:
$('#select1').change(function() {
$('#select2').prop('disabled', true);
});
(未测试的)