ZF2-无法隐藏Zend \ Element \ Select上的选择选项

时间:2013-08-07 11:24:44

标签: javascript zend-framework2 zend-form

我正在研究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 ;
    } 
}

但是当第一个选择字段改变时,什么都没有。那问题出在哪里?

1 个答案:

答案 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);
});

(未测试的)

文档