动态更新选择中的选项 [英] Update options in select dynamically

查看:26
本文介绍了动态更新选择中的选项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 jQuery 构建了一个 动态 select ,如下所示:

I have constructed a dynamic select using jQuery like below:

基于YesOrNo,我必须在Source输入

Based on YesOrNo, I have to show/hide options in Source and Type

Yes/No          Source               Type
---------------------------------------------
Yes             Yes1 and Yes2        Yes
No              No1 and No2          No1 to 6

HTML:

<select id="YesOrNo" name='YesOrNo'>
    <option value=''>Select Yes/No</option>
    <option value='1'>Yes</option>
    <option value='2'>No</option>
</select>
<select id='Source' name='Source'>
    <option value=''>Select Source</option>
    <option data-aob='Yes' value='1'>Yes1</option>
    <option data-aob='Yes' value='2'>Yes2</option>
    <option data-aob='No' value='3'>No1</option>
    <option data-aob='No' value='4'>No2</option>
</select>
<select id="Type" name='Type'>
    <option value=''>Select Type</option>
    <option data-aob='No' value='1'>No1</option>
    <option data-aob='No' value='2'>No2</option>
    <option data-aob='No' value='3'>No3</option>
    <option data-aob='No' value='4'>No4</option>
    <option data-aob='Yes' value='5'>Yes</option>
    <option data-aob='No' value='6'>No5</option>
    <option data-aob='No' value='7'>No6</option>
</select>

JQuery:

$('#YesOrNo').on('change', function () {
    if (this.value === '1') {
        $('#Source option[data-aob=Yes]').show();
        $('#Source option[data-aob=No]').hide();
        $('#Type option[data-aob=Yes]').show();
        $('#Type option[data-aob=No]').hide();
        $("#Source option:selected").prop("selected", false);
        $("#Type option:selected").prop("selected", false);
    } else if (this.value === "2") {
        $('#Source option[data-aob=Yes]').hide();
        $('#Source option[data-aob=No]').show();
        $('#Type option[data-aob=Yes]').hide();
        $('#Type option[data-aob=No]').show();
        $("#Source option:selected").prop("selected", false);
        $("#Type option:selected").prop("selected", false);
    } else {
        $('#Source option').show();
        $('#Type option').show();
        $("#Source option:selected").prop("selected", false);
        $("#Type option:selected").prop("selected", false);
    }
});

这是我的 JSFiddle

这和我预期的一样完美.由于这些值是从数据库中获取的,因此在 YesOrNo 中显示 selected 选项时出现问题.

This is working perfect as I expected. Since the values are obtained from database, I have a problem while displaying the selected option in YesOrNo.

<select id="YesOrNo" name='YesOrNo'>
            <option value=''>Select Yes/No</option>
            <option selected value='1'>Yes</option>
            <option value='2'>No</option>
          </select>

这里默认选择了是"选项,但这里http://jsfiddle.net/ubVfa/1/ 仍然显示四个选项,Type 显示所有 7 个选项.

Here the option "Yes" is selected by default, but here http://jsfiddle.net/ubVfa/1/ still showing the four options and Type showing all 7 options.

Yes/No                            Source               Type
--------------------------------------------------------------------
Yes(SELECTED by default)          All 4 options        All 7 Options

如何调整我的代码以动态更新 select 中的选项.

How to tune my code to update the options in select dynamically.

感谢任何帮助.

推荐答案

可以在页面加载后调用$("...").change():

You can call $("...").change() after the page is loaded:

$(function(){
    $('#YesOrNo').change();
});

我的小提琴:

当没有选择任何东西时,我也隐藏了选项,在onchange"事件处理程序中调用 $("...").hide().

I also hid the options when nothing is selected, calling $("...").hide() in the "onchange" event handler.

带有 func 作为匿名函数的 $(func)$(document).ready(func) 的语法建议,在加载后调用给定的函数.

The $(func) with func as an anonymous function is a syntatic suggar for $(document).ready(func), which calls that given function after loading.

change"调用只是一个触发器调用,比如$("...").trigger("change").

The "change" call is just a trigger call, like $("...").trigger("change").

这篇关于动态更新选择中的选项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆