Onchange无法正常使用Bootstrap

时间:2017-04-18 18:39:24

标签: javascript jquery twitter-bootstrap

在我看来,我有

<div class="form-group">
    @Html.LabelFor(m => m.IsBasket, new { @class = "control-label col-sm-2" })
    <div class="col-sm-10">
        <div class="input-group" id="IsBasket">
            @Html.DropDownListFor(model => model.IsBasket, ViewBag.RefAssetType as IEnumerable<SelectListItem>, new { @class = "form-control" })
        </div>
    </div>
</div>

    <div id="SingleStock" class="hide">
            <div class="form-group">
                @Html.LabelFor(m => m.ReferenceAsset, new { @class = "control-label col-sm-2" })
                <div class="col-sm-10">
                    <div class="input-group">
                        @Html.DropDownListFor(model => model.ReferenceAsset, ViewBag.RefAssetList as IEnumerable<SelectListItem>, new { @class = "form-control" })
                    </div>
                </div>
            </div>
        </div>

        <div id="Basket" class="hide">
            <div class="form-group">
                @Html.LabelFor(m => m.PayoutCurrency, new { @class = "control-label col-sm-2" })
                <div class="col-sm-10">
                    <div class="input-group">
                        @Html.DropDownListFor(model => model.PayoutCurrency, ViewBag.CurrencyList as IEnumerable<SelectListItem>, new { @class = "form-control" })
                    </div>
                </div>
            </div>
        </div>

我的剧本

<script>

        $('#IsBasket').on('change',function()
        {
            if ($(this).val()== true)
            {
                $('#SingleStock').addClass('hide');
                $('#Basket').removeClass('hide');
            }
            if ($(this).val() == false)
            {
                $('#Basket').addClass('hide');
                $('#SingleStock').removeClass('hide');
            }
        })

</script>

此处定义了RefAssetType的选择列表

Dictionary<bool, string> RefAssetTypeDictonary = new Dictionary<bool, string>
            {

                {false, "Single Stock"},
                {true, "Basket"},
            };

ViewBag.RefAssetType = new SelectList(RefAssetTypeDictonary, "Key", "Value");

我最终想要的是,如果用户选择&#34;篮子&#34;来自id =&#34; IsBasket&#34;然后输入id = Basket将出现。如果是单库,则输入id = SingleStock部分将显示。但这种变化并没有起作用。

我希望有人可以帮忙解决这个问题。谢谢:))

1 个答案:

答案 0 :(得分:0)

问题是您将onchange处理程序附加到包含下拉菜单的div。当下拉列表的值发生变化时,这并不意味着容器div会发生变化。如果您将jQuery选择器更改为使用find,它应该可以工作,如下所示:

$('#IsBasket').find('select').on('change',function() {
    // ...
});

使用此选择器,您将onchange处理程序附加到ID为#IsBasket的div中包含的任何HTML select元素。