MVC ReadOnly文本框不能按预期使用退格键和空格键

时间:2014-09-09 18:18:30

标签: jquery asp.net-mvc

在我的应用程序中,我们有一个MVC表单,其中包含40-50个不同的控件(文本框,下拉列表和Jquery日期选择器)。我需要在编辑模式下将少数文本框字段设置为只读,并且基于用户授权,如果他具有此表单的读取权限,我需要将所有文本框字段设置为只读。

我实际上使用readonly属性而非禁用,因为应该允许用户使用键盘来复制不可编辑字段的内容。

但是现在我在将字段设置为只读时遇到了一些问题。当用户在只读字段中点击退格时,浏览器返回功能将被触发,如果他点击空格键,表单位置将移动到页面底部。

我无法添加keydown事件来绕过Read Privilege中所有30-40个不同文本框的退格键和空格键。

有人可以帮我解决一下吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你应该这样做,防止重点元素的只读的退格或空格:

$(document).on('keydown', function(e) {
 if(e.keyCode === 8 || e.keyCode === 32 && $(':focus').attr('readonly'))
 {
    alert('prevent backspace or space!');
    e.preventDefault();
 }
 else
 {
    alert('i can backspace!');
 }
});

这里的工作示例:http://jsfiddle.net/fals/0qwrj1tc/