javascript - 当文本匹配选择时支持输入框
问题描述
我有多个下拉菜单,如下所示:
<select id="filter-race">
<option>Select Race</option>
<option>Aqua</option>
<option>Beast</option>
<option>Beast-Warrior</option>
<option>Creator-God</option>
</select>
例如,选择其中一个选项会创建一个 url 查询字符串&race=Aqua
。
然后在页面加载时检查查询字符串并更改下拉列表:
if(getQueryVariable("race") != undefined){
if(getQueryVariable("race") == "Aqua"){
jQuery('#filter-race').prop('selectedIndex',1).trigger("chosen:updated");
}else if(getQueryVariable("race") == "Beast"){
jQuery('#filter-race').prop('selectedIndex',2).trigger("chosen:updated");
}
else if(getQueryVariable("race") == "Beast-Warrior"){
jQuery('#filter-race').prop('selectedIndex',3).trigger("chosen:updated");
}
else if(getQueryVariable("race") == "Creator-God"){
jQuery('#filter-race').prop('selectedIndex',4).trigger("chosen:updated");
}
}
我正在检查我的脚本并清理我几年前创建的许多旧代码。我正在尝试通过简单的匹配来解决更好的方法。
就像是:
if(getQueryVariable("race") != undefined){
jQuery('#filter-race').prop('selectedIndex', 'getQueryVariable("race")').trigger("chosen:updated");
}
我知道这段代码行不通,但这是我想要达到的目标的思考过程。我知道我可能应该使用option values
select 但我想知道是否有可能在不影响性能的情况下实现我的要求。
.trigger("chosen:updated");
在我使用jQuery Chosen时需要。
解决方案
想出了一个比大 if else 匹配链更简单的方法:
//Card Race String Query
if(getQueryVariable("race") != undefined){
jQuery('#filter-race').val(decodeURI(getQueryVariable("race"))).trigger("chosen:updated");
if(document.getElementById('filter-race').value == ''){
jQuery('#filter-race').prop('selectedIndex',0);
}
}
第一行将选择下拉框设置为从&race=
查询字符串中获取的任何值。
但是,如果这是一个无效值,下拉框将填充空白/空值。所以我通过设置它来跟进它,如果是这种情况,它就是默认值。
推荐阅读
- javascript - 删除 Fauna DB 中的子对象
- javascript - 使用 jest 测试用于创建 DOM 元素的 js 函数时,元素内容未填充,而在 jest 之外它可以正常工作
- outlook - 用户单击“签名”时 Outlook 崩溃
- python - 为什么我的号码中的数字分开打印而不是一起打印?
- google-cloud-platform - 如何知道 GCE 实例在控制台中使用的存储类型
- reactjs - 如何在 React 中指定多个宽度
- python - 使用“烧瓶运行”获取 ImportError
- javascript - 如何关闭未在数组中选择的 Div?Shopify 中的 Javascript
- windows - 下载服务后在 Windows 上设置 SNMP
- php - PHP数组爆炸作业