使用JQuery选择一个下拉选项并启动OnChange功能
Use JQuery to select a dropdown option and fire the OnChange function
我有一个加载了下拉列表的页面,其中有一个带有id = "accounts"
的选择下拉列表。当页面加载时,它已经在Account Orange页面上了。我想使用JQuery找到select id元素,然后强制它单击3选项,该选项应该是索引2。
<select id="accounts" onChange="changeAccount(this.form,this[this.selectedIndex].value)">
<OPTION value="">Select One...</OPTION>
<OPTION value="111">Account Red</OPTION>
<OPTION value="222">Account Yellow</OPTION>
<OPTION value="333">Account Blue</OPTION>
<OPTION value="444" selected>Account Orange</OPTION>
</select>
像这样的东西有效:
jQuery('#accounts>option:eq(2)').prop('selected', true);
目前,当页面加载时,它确实选择了正确的选项,尽管有"selected"标记,但它不会将其激发到OnChange功能以选择"Account Yellow",然后它会重新加载页面。这就是我希望它做的。
首先,最好通过值而不是索引来设置SELECT
的值。因为您可能希望稍后(在源代码中或动态地)添加额外的OPTION
,然后您的索引计数就会关闭
其次,我发现更好的做法是更改SELECT
的值,而不是更改使其被选中的HTML属性/属性(例如,不设置/更改OPTION
的selected
属性,而是更改SELECT
的值)。否则,您可能会得到多个selected
OPTION
,这些可能会起作用,但不是非常干净的编码。
第三,如果您使用OPTGROUP
的,建议的>option:eq(2)
选择器可能不起作用,因为OPTION
不是SELECT
的直接后代。
因此,我的建议是使用:jQuery('#accounts').val('222').change();
它选择正确的SELECT
字段,然后将值设置为333
,然后激发onchange
事件(在这种情况下需要手动执行)。
$('#accounts>option:eq(2)').prop('selected', true).promise().then(function(){
changeAccount(this.form,this[this.selectedIndex].value)
});
尝试以下操作:
jQuery('#accounts>option:eq(2)').prop('selected', true).closest('select').trigger('change');
相关文章:
- 在同一选项卡中启动下载,而无需在Javascript中打开新选项卡或窗口
- 如何在ASP.NET中单击按钮后激活启动选项卡
- 启动选项卡ajax在加载页面时加载内容
- 为什么首先单击文档空白处的任何位置启动代码,而不是单击超链接,以及为什么打开了太多选项卡
- 启动选项卡的MixItUp问题
- 启动脚本中的 GATE -Dgate.plugins.home 选项
- 使用 gBrowser 和 ObserverService 查找启动时的选项卡
- AngularJS.启动所选项目的秒表
- 如何使用书签在新选项卡中启动函数
- Chrome扩展:启动时打开新选项卡
- 启动数据切换选项卡激活启动库
- 如何在选项卡单击时重新启动liquidlooper
- Phonegap Corodva应用iOS的自定义启动页面选项(设置self.viewController.startP
- 如何从选项页面启动和停止计时器
- 传入带有npm启动的CLI选项
- HTML/Javascript启动打印选项
- 如何仅在启动选项卡处于活动状态时加载启动选项卡内容
- 使用JQuery选择一个下拉选项并启动OnChange功能
- 如何打开一个启动模式与一个特定的选项卡活动
- 如何在使用窗口后启用浏览器选项卡.打开以启动一个新窗口