【问题标题】:Refresh dropdownlist based on select option in list根据列表中的选择选项刷新下拉列表
【发布时间】:2013-10-21 10:50:22
【问题描述】:

我真的需要帮助。我是 jQuery 的新手,我正在尝试刷新 dropdown list 或在选择列表中的选项时更改其值。

HTML

<select name="State_locate" class="State">
    <option value=" " selected="selected">Select a state</option>
    <option value="AL">Alabama</option>
    <option value="AK">Alaska</option>
</select>
<div id="City_1" class="Alabama">
    <select name="City_location[]" class="CityExt">
        <option value="Null" selected="selected">Select a city</option>
        <option value="Avondale">Avondale</option>
        <option value="Buckeye">Buckeye</option>
        <option value="Catalina">Catalina</option>
    </select>
</div>
<div id="City_1" class="Alaska">
    <select name="City_location[]" class="CityExt">
        <option value="Null" selected="selected">Select a city</option>
        <option value="Lancaster">Lancaster</option>
        <option value="Soth">Soth</option>
        <option value="Foothills">Foothills</option>
    </select>
</div>

JS

// JavaScript Document

$("select").bind("change", function () {

    if ($(this).val() == "AL") {
        $(".Alabama").slideDown();

        $(".Alaska").slideUp(function () {

            if ($('.Alabama').is(':visible')) {
                $(".Alaska option[value='Lancaster']").attr('selected', 'selected')
            }
        });
    } else if ($(this).val() == "AK") {
        $(".Alaska").slideDown();
        $(".Alabama").slideUp();
    }
})

我想做的是当一个州被选中时,一个城市就会下降。这完美无缺。但是一旦提交,城市的值就会存储在数组City_location[]中。

遇到的问题是,如果用户为阿拉斯加选择了一个城市,然后在提交表单之前选择了阿拉巴马州下的另一个城市,那么数组中最终会出现阿拉巴马州和阿拉斯加州下的两个城市。

如果选择了阿拉巴马州,我正在寻找一种方法来为阿拉斯加州选择值“Null”。但是我的代码不起作用。它仅在值不是“Null”时才有效。例如,如果我在 jQuery 代码的这一部分中使用值“Lancaster”

$(".Alaska option[value='Lancaster']").attr('selected', 'selected')

它只工作一次。如果我做了两次,它不会更新。我该如何解决这个问题。

抱歉,代码太长了。感谢您的帮助。

【问题讨论】:

  • 为什么要把它存储在一个数组中?你是在选择多个值吗??
  • 我将它存储在一个数组中,因为如果我不这样做,当我提交表单时,我无法检索城市,因为选择具有相同的名称。这只是一个示例代码,我正在尝试为所有 50 个州执行此操作。如果我有不同的名字,那么我的代码会更长。

标签: jquery


【解决方案1】:

你可以这样做:

$('.state').on('change',function() {
   $('.CityExt').val('');
}

然后,每当状态选择发生变化时,都会将两个城市选择的值设置为空。

【讨论】:

  • 我尝试了您的建议,但没有成功。我使用了您的一些想法以及上面的想法来提出此代码。 if ($(this).val() == "AL") { $(".Alabama").slideDown(); $(".Alaska").slideUp(function() { if ($(".Alabama:visible").length){ $(".Alaska option[value='Anchoragege']").attr('selected' , '选中'); } });
【解决方案2】:

试试这个:

$(".Alaska option:eq(0)").attr('selected', 'selected')

由于 null 元素是第一个元素,这将解决您的问题。

【讨论】:

  • 感谢您的及时回复。我尝试了您的建议,但没有任何反应。
  • 我认为上述解决方案正是您要寻找的。当您选择.Alabama 时,它会为.alaska 类选择null 值。
【解决方案3】:

我发现了我的问题。我没有使用“prop”,而是使用了“attr”

$(".Alaska option[value='Lancaster']").prop('selected', 'selected');

现在每次在提交两次以上之前选择另一个城市时,代码就不会只工作一次。

我查了含义,但还是不太明白,为什么在 jquery 中使用“prop”而不是“attr”。我会继续搜索。感谢所有回复我的人给我的帮助。

【讨论】:

  • 这是因为您使用的是 jquery 1.6+ 并且在此介绍了 prop 在 prop 上查看更多信息api.jquery.com/prop
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多