【问题标题】:How to code Jquery Chosen on select event?如何在选择事件上编码 Jquery Chosen?
【发布时间】:2013-10-30 19:15:03
【问题描述】:

我的代码有点问题,希望有人能提供帮助。我试图让用户从选择框中选择一个选项,然后根据该查询结果选择另一个选择框。我知道这应该很简单,但我似乎无法让它工作。这是我目前得到的代码。

第一个选择框:

select id="selCategory" name="category" class="chzn-select"<?php if (in_array('category',$_SESSION['iserror'])) {echo ' class="isError" ';} ?> >
<option value ="" ">
        <?php
        while ($row = hesk_dbFetchAssoc($res))
        {
            echo '<option value="' . $row['id'] . '"' . (($_SESSION['c_category'] == $row['id']) ? ' "' : '') . '>' . $row['name'] . '</option>';
        }
        ?>
        </select>

第二个选择框:

<select id="selAsset" name ="asset" class="chzn-select"> 
    <option value="" selected="selected"></option>
    <?php
        while ($row = odbc_fetch_array($Assets))
        {
        echo '<option value="' . $row['AssetID'] . '"' .            (($_SESSION['c_asset'] == $row['AssetID']) ? '              selected="selected"' : '')
        . '>' . $row['AssetName']. '</option>';
        }
        odbc_close($conLansweeper);
    ?>
    </select>

显示第二个下拉框时要处理的代码。

<script language="Javascript" type="text/javascript">$(function()
{
$(".selCategory").chosen().change(function(){
    var selectedCategory=$(this).find("option:selected").val();
    if(selectedCategory == "1")
    {
        $(.selAsset).show();
    }
    else 
    {
        $(.selAsset).hide();
    }
    });
    });
    </script>

页脚代码:

<script type="text/javascript" src="script/chosen/jquery.min.js"></script>
<script type="text/javascript" src="script/chosen/chosen.jquery.js"></script>
<!--<script type="text/javascript" src="script/jquery/jquery-1.10.2.min.js"></script>-->
<script type="text/javascript">$(".chzn-select").chosen({disable_search_threshold: 10, width:200, placeholder_text_single:" ", search_contains: true, allow_single_deselect: true });</script>

基本目的是在页面加载时隐藏第二个选择框,并在第一个选择框中选择适当的值时显示。

谁能帮帮我?我以前没有设法让它工作,如果我能得到一个工作示例和一些帮助来说明我哪里出错了,那真的很有帮助。

【问题讨论】:

    标签: php jquery jquery-events jquery-chosen


    【解决方案1】:

    方法 1(使用现有的 html):

    用css隐藏:

    #selAsset {
      display:none;
    }
    

    然后是 jQuery:

    $(function(){
      var selCategory = $('#selCategory');
      $(selCategory).change(function() {
        $('option:selected').each(function() {
          if($(this).text() === '3') {
            jQuery('#selAsset').show();
          }
        });
      });
    });
    

    这使用text() 来检查选定的选项。在您的代码中不需要.chosen(),您可以将其更改为:$(.selAsset).show(); 为:$('#selAsset').show();(以匹配 html)。

    演示:http://jsfiddle.net/dRM92/1/

    更好的方法(来自 cmets):

    我们可以使用.change(function(){和一个switch case来检查选项的值;然后进行相应的操作。

    var selCategory = $('#selCategory');
    var selAsset = $('#selAsset');
    
    selCategory.change(function() { 
        switch ($(this, 'option:selected').val()) {
            case "3":
                selAsset.show();
                break;
            case "please select":
                selAsset.hide();
                break;
        }
    });
    

    这比以前的方法更具可扩展性。有很多方法可以检查选项的值或文本;对于这种情况,我们只需要检查选定的值和您希望拥有的参数。

    演示:http://jsfiddle.net/gzWGQ/1/

    【讨论】:

    • 嗨,托尼,感谢您的回复。这是一个很好的例子,但是当取消选择原始选项时,如何使第二个选择框消失?我可以看到它有效,但我的 Jquery 似乎不想打球。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多