Javascript 选择器-选择时临时禁用选项

Javascript 选择器-选择时临时禁用选项,javascript,selector,Javascript,Selector,当选择选项处于活动状态时,是否可以禁用该选项?我有一个选择器,它有各种选项,每个选项都触发一个SQL查询。如果选择同一选项两次,贴图将断开。我认为最简单的解决办法是一旦选择了一个选项就禁用它 <select id="sql" onclick="updateSource()" class="selector"> <option value="SELECT * FROM indicators WHERE 1=0" disabled selected>Select a

当选择选项处于活动状态时,是否可以禁用该选项?我有一个选择器,它有各种选项,每个选项都触发一个SQL查询。如果选择同一选项两次,贴图将断开。我认为最简单的解决办法是一旦选择了一个选项就禁用它

<select id="sql" onclick="updateSource()" class="selector"> 
    <option value="SELECT * FROM indicators WHERE 1=0" disabled selected>Select an Indicator</option>     
    <option value="SELECT * FROM indicators WHERE grain ILIKE 'Yes'">Change in grain (maize, wheat & barley) production</option>
    <option value="SELECT * FROM indicators WHERE sorghum ILIKE 'Yes'">Change in Sorghum production</option>
</select>

选择一个指标
谷物(玉米、小麦和大麦)产量的变化
高粱生产的变化

如果我正确理解了您的意思,您想在选中
选项后禁用它吗

函数更新资源(e){
常数目标=e[e.值];
target.disabled=true;
}

选择一个指标
谷物(玉米、小麦和大麦)产量的变化
高粱生产的变化

如果我正确理解了您的意思,您想在选中
选项后禁用它吗

函数更新资源(e){
常数目标=e[e.值];
target.disabled=true;
}

选择一个指标
谷物(玉米、小麦和大麦)产量的变化
高粱生产的变化


是否要禁用select?如果您使用的是后端数据库,您确实不希望将SQL暴露给HTML源代码。如果是WebSQL,用业务逻辑混淆表示代码(HTML)仍然不是一个好主意。把它放在一个外部JS文件中。这并不能回答你的问题;仅供参考。@Utkanos谢谢你的建议,非常感谢。在这种情况下,后端数据库是CartoDB,它为SQL查询的地图数据提供服务。CartoDB使您能够仅使用特定项目所需的数据库(地图数据层)创建唯一的API,并提供仅设置读取权限的选项。我仍然更愿意按照您的建议执行此操作,因此我肯定会对此进行研究。@AAShakil是的,我想禁用所选选项(灰显),以便它不能连续单击两次。是否要禁用选择?如果您使用的是后端数据库,您真的不想将SQL暴露于HTML源代码中。如果是WebSQL,用业务逻辑混淆表示代码(HTML)仍然不是一个好主意。把它放在一个外部JS文件中。这并不能回答你的问题;仅供参考。@Utkanos谢谢你的建议,非常感谢。在这种情况下,后端数据库是CartoDB,它为SQL查询的地图数据提供服务。CartoDB使您能够仅使用特定项目所需的数据库(地图数据层)创建唯一的API,并提供仅设置读取权限的选项。我仍然更愿意按照您的建议执行此操作,因此我肯定会对此进行研究。@AAShakil是的,我想禁用所选选项(灰显),以便它不能连续单击两次。感谢您提供的示例,第二个代码段正是我要查找的。但是,在我的应用程序中,它不起作用,因为选择器还有一个onclick=“updateSource()”函数(我想这就是原因吧?)。如果您不介意看一看的话,我已经在CodePen中添加了一个简化的项目示例-@JohnGIS在使用选择标记时,您通常不需要听
onclick
事件,
onchange
应该足够了。您是否尝试过使用它而不是
onclick
?是否可能有两个
onchange
侦听器?因为一个用于SQL函数,另一个用于选项disable。我正在尝试
onchange=“updateSource();updateOptions(this)
,但是禁用功能不起作用。为什么不直接从
updateOptions
调用
updateSource
?@JohnGIS否则如果你真的想让它们100%分开,你可以明确地告诉浏览器以js的形式执行你的“链接”,就像这样:
onchange=”javascript:console.log('Hello');console.log('world!')“
感谢您提供的示例,第二个代码片段正是我想要的。但是,在我的应用程序中,它不起作用,因为选择器还有一个onclick=“updateSource()”函数(我想这就是原因吧?)。如果您不介意看一看的话,我已经在CodePen中添加了一个简化的项目示例-@JohnGIS在使用选择标记时,您通常不需要听
onclick
事件,
onchange
应该足够了。您是否尝试过使用它而不是
onclick
?是否可以有两个
onchange
列表因为一个用于SQL函数,另一个用于选项disable;updateOptions(this)
,但禁用功能不起作用。为什么不直接从
updateOptions
调用
updateSource
?@JohnGIS否则如果你真的想让它们100%分开,你可以显式地告诉浏览器以js的形式执行你的“链接”,比如:
onchange=“javascript:console.log('Hello');console.log(“世界!”)“