[英]JavasScript: how do I prevent a user from selecting anything in a select option list without using disable/pointer-events?
我试图防止用户选择除选定值以外的任何其他值。 由于我的公司又老又弱,他们使用IE9,而我使用的是MVC3 / c#。 因此,我希望View将预先选择的值发送回Controller,并防止用户更改该值。 我已经尝试过“ /pointer_events_polyfill.js”,但对于使IE9使用“指针事件”不起作用。
<select id="abc">
<option value="volvo">Volvo</option>
<option value="saab" selected>Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select>
有没有可以用来防止用户更改预选值的javascript函数或类?
有很多方法可以解决此问题。 从可用性的角度来看,最好只是向用户显示预选的值,而不是尝试将其表示为输入。 输入内容告诉用户可以选择,而您基本上是在说已经为他们选择了。 其他选项包括:
从select
删除除所需option
以外的所有option
。
$('#abc option[value="saab"]').siblings().remove();
禁用select
。
响应change
事件,并在用户每次更改时将select
的值设置回其动态计算的值。
$('#abc').change(function() {$(this).val('saab');});
但是,无论您决定如何向用户表示此内容, 都不得依赖客户端代码来强制其选择 。 提交表单后,您的服务器将需要根据用户做出的其他选择来计算所需的值。 否则, 精明的用户将能够破解所提交的值 。
您只需要将disabled
属性设置为select即可:
<select id="abc" disabled>
<option value="volvo">Volvo</option>
<option value="saab" selected>Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.