繁体   English   中英

JavasScript:如何防止用户在不使用禁用/指针事件的情况下在选择选项列表中选择任何内容?

[英]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>

请参阅: http//jsbin.com/vozeyajiseco/1/edit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM