【问题标题】:Populating Input Options based selection填充基于输入选项的选择
【发布时间】:2012-05-13 18:06:16
【问题描述】:

我试图找到创建多个输入菜单的最佳方法,这些输入菜单将根据那里的选择自动填充。 我遇到的问题是有很多选择。将有 4 个下拉菜单。每个下拉菜单都有 2 个选项。

我正在查看以下示例。虽然这种方法有效,但代码量会很大>> http://devingredients.com/2011/05/populate-a-select-dropdown-list-with-jquery/

有谁知道实现这一目标的最佳方法??

谢谢,

【问题讨论】:

    标签: jquery html input


    【解决方案1】:

    这可以通过一些通用的辅助函数轻松完成。

    例如,您可以编写一个函数来根据传递的单个值清除和填充 <select> 元素,而不是手动为每个值提供原始 HTML。

    在准备过程中,您需要创建一个对象,其中包含第一个 <select> 的值作为第二个 <select> 列表的索引。像这样的 -

    var beverages = {
     'wine' : ['Red','White'],
     'beer' : ['dark','pale'],
     'juice': ['mango','grapefruit']
    };
    

    现在我们知道beverages['beer'][0] 会给我们一瓶冷啤酒。

    从这里我们可以编写一个更通用的函数来帮助我们进行 HTML 操作...

    function populateSelect(category){
      // remove all existing options.
      $("#secondSelection").find('option').remove(); 
      $.each(beverages[category],function(index,elem){
        // for each item in beverages[category],
        // we add an option to the <select>.
         $("#secondSelection").append('<option>'+elem+'</option>');
      });
    }
    

    你可以这样调用这个函数 -

    populateSelect($("#firstSelection").val());
    

    您必须拥有的标记是这样的 -

    <select id="firstSelection">
      <option value='beer'>Beer</option>
      <option value='wine'>Wine</option>
      <option value='juice'>Juice</option>
    </select>
    <select id="secondSelection">
      <option>Choose a Category</option>
    </select>
    

    对于像你描述的更复杂的结构,你可以在原始对象中嵌套更多选项,它是数组......

    【讨论】:

    • 感谢您的更新。然而,我只是想全力测试,但 jquery 似乎失败了。任何想法jsfiddle.net/Y3wa5/3
    • 是的,我的代码中有一个小错误。但是看看this - 这就是你应该如何实现它。您仍然需要附加一个.on('change') 侦听器...
    • 你应该考虑让你的第一个&lt;option&gt;元素类似于--Choose one--,这样你就可以确定change事件会被触发。
    • 效果很好。我尝试添加一个额外的输入,但它没有正确填充jsfiddle.net/Y3wa5/16
    • 不——你误解了我的意思。我的意思是第一个选择的第一个选项(在我的情况下,选择beerwine...)将是--choose one-- - like this
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2012-05-18
    • 1970-01-01
    • 2012-10-30
    相关资源
    最近更新 更多