JavasScript:如何防止用户在不使用禁用/指针事件的情况下选择选择选项列表中的任何内容
JavasScript: how do I prevent a user from selecting anything in a select option list without using disable/pointer-events?
我试图阻止用户选择所选值以外的任何其他值。 因为我的公司很老,很弱,他们使用IE9,而我使用的是MVC3/c#。 因此,我希望视图将预选值发送回控制器,并防止用户更改该值。 我已经尝试过"/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
以外的所有。$('#abc option[value="saab"]').siblings().remove();
-
禁用
select
。 -
响应
change
事件,并在用户每次更改select
的值时将其设置回其动态计算的值。$('#abc').change(function() {$(this).val('saab');});
但是,无论您决定如何向用户表示这一点,您都不能依赖客户端代码来强制他们的选择。提交表单后,您的服务器需要根据用户所做的其他选择计算所需的值。否则,精明的用户将能够破解提交的值。
你只需要将disabled
属性设置为你的选择:
<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
相关文章:
- 在我的情况下,使用带有变量失败的 jquery 选择器
- 如何创建只允许用户在选中前一个复选框的情况下选择复选框的复选框验证
- 获取 HTML 5 音频控制文件位置并在不使用 id 选择器的情况下更新 src
- 如何在不刷新页面和不单击“发送”按钮的情况下从下拉选择中向 MYSQL 发送值
- 是否可以在不使用jQuery的情况下在下拉列表中选择选项
- 如何在不使用javascript和asp.net选择dropdownlist值的情况下显示验证
- 默认情况下无法预先选择所需的单选框
- 在我的情况下,如何选择某些孩子
- AngularJs:默认情况下未选择单选按钮
- 如何在不选择模式配置参数的情况下,使用mongoose在MongoDB模式实例化中的关联数组/对象中执行foreach
- jQuery:在没有字符串选择器的情况下分离
- 如何在不重新加载页面的情况下选择文件提交表单
- 有没有一种方法可以让jQuery日期选择器在没有年份的情况下工作
- AngularJS:在不修改ng模型的情况下获取选择标签
- 在 d3.js 中,如何在不进行新选择的情况下检查元素是否已被删除
- 如何在不刷新页面的情况下将“HTML 选择值”发送到另一个使用 ajax 的网页
- 如何在没有时区的情况下发送 AngularStrap 日期选择器值
- 默认情况下,在 angularjs 中选择下拉列表中的最后一个位置显示占位符
- 在我的情况下,任何使用 * 的选择器都失败了
- 在给定现有答案的情况下,更改日期选择器中的 minDate 选项不起作用