【问题标题】:Set select's option value and fire change trigger properly正确设置选择的选项值并触发更改触发器
【发布时间】:2012-09-21 14:29:49
【问题描述】:

我有三个选择框

$("select#selectbox1").val(data.Ref_box1_ID.toString()).trigger('change');
$("select#selectbox2").val(data.Ref_box2_ID.toString()).trigger('change');
$("select#selectbox3").val(data.Ref_box3_ID.toString()).trigger('change');

我有一个问题:在更改事件中,有一些代码可以在下一个选择框中加载选项,但看起来它只适用于第一个正确选择选项然后触发更改事件在下一个选择框中加载选项的代码;但是第二个选择只显示第一个选项,上面写着“选择一个选项......”,而在第三个中它根本不加载任何东西,也不选择任何选项..

我可能在这段代码中遗漏了什么?...我尝试将 .blur() 也用于刷新但没有效果,也没有在 .trigger() 之前添加事件属性('selected','selected')。 ..

任何方向都将不胜感激。

【问题讨论】:

  • 添加更改事件的代码,因为您提供的示例没有任何问题。 (也许你可以使用 for 循环而不是复制代码)
  • 如果您在 change 事件中异步加载项目,当您尝试选择下一个选择框的值时,这将不完整。
  • 不相关,但不要使用$("select#selectbox3")。它毫无意义,因为 ID 应该始终是唯一的。请改用$("#selectbox3")

标签: jquery


【解决方案1】:

检查一下

<select id="selectbox1" />
    <option value="11"> 11</option>
    <option value="12"> 12</option>
    <option value="13"> 13</option>
</select>

<select id="selectbox2" />
    <option value="21"> 21</option>
    <option value="22"> 22</option>
    <option value="23"> 23</option>
</select>
<select id="selectbox3" />
    <option value="31"> 31</option>
    <option value="32"> 32</option>
    <option value="33"> 33</option>
</select>

$(function() {
    $('#selectbox1 , #selectbox2, #selectbox3').on('change', function() {

        var val = $(this).find('option:selected').val();

        alert('Value of ' + $(this).attr('id') + ' is : ' + val);
    });

    $("#selectbox1").val('12').trigger('change');
    $("#selectbox2").val('23').trigger('change');
    $("#selectbox3").val('32').trigger('change');

});​

您是在定义事件之后还是在此之前触发了事件。如果稍后完成,则事件还不能触发它们...

检查FIDDLE

【讨论】:

  • 大家好,在每个选择器的 change() 事件中,我为下一个选择器加载数据。我也输入了$("#selectbox1").val(data.Ref_box1_ID.toString()).change(); $.when($("#selectbox1").triggerHandler('change')).done(function () { $("#selectbox1").blur(); $("#selectbox2").val(data.Ref_box2_ID.toString()); });,但它没有在第二次选择中选择该选项,当它应该......我可能错过了什么吗?谢谢大家...欢呼路易吉
  • 另外,如果我使用alert(message); 而不是$("#selectbox1").blur();,则在#selectbox2 中选择了该选项...即使blur() 会强制事件...所以我应该错过什么? ...谢谢大家,干杯!
猜你喜欢
  • 2013-05-30
  • 2013-10-12
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多