在我的应用程序中,我们有一个MVC表单,包含40-50个不同的控件(文本框、下拉列表和Jquery日期选择器)。我需要在编辑模式下将一些文本框字段设置为只读,并且根据用户授权,如果他对此表单具有读取权限,我需要将所有文本框字段都设置为只读。
我实际上是在使用只读属性而不是禁用,因为应该允许用户使用键盘来复制不可编辑字段的内容。
但现在我在将字段设置为只读时遇到了一些问题。当用户单击只读字段中的退格时,浏览器返回功能将被触发,如果他单击空格键,表单位置将移动到页面底部。
我无法添加keydown事件来绕过读取特权中所有30-40个不同文本框的退格键和空格键。
有人能帮我解决同样的问题吗?
提前感谢您的帮助。
您应该这样做,在具有只读的聚焦元素处防止退格或空格:
$(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/