假设我们有一个只读的文本框,如下:
<input type="text" readonly />
在IE 9和FF 4中,当我单击此字段时,字段中会出现(非闪烁)光标。但是,在Chrome中,光标不会显示。 (请参阅http://jsfiddle.net/hqBsW/。)
我想我明白为什么IE / FF选择显示光标 - 所以用户知道他或她仍然可以选择字段中的值。
尽管如此,它显然让我们的用户感到困惑,我们希望将IE / FF更改为不显示光标,就像Chrome为readonly
字段所做的那样。
有办法做到这一点吗?
答案 0 :(得分:19)
我的解决方案,来自nikmd23的jQuery代码片段,但模糊()函数似乎效果更好
$('input[readonly]').focus(function(){
this.blur();
});
Example here: http://jsfiddle.net/eAZa2/
不要使用“已禁用”属性,因为当输入属于表单
时,不会提交输入答案 1 :(得分:7)
如果您将readonly
属性更改为disabled
,则无法点击输入框,因此无法使用光标。
根据浏览器的不同,您可能无法选择文本。
我在这里提供了各种输入状态的示例:http://jsfiddle.net/hqBsW/1/
另一种选择是,当用户关注给定的输入元素时,您可以强制选择文本。控制行为的这种变化将更容易使用户知道输入受到限制的事实,并且如果这是最终用例,则允许他们非常容易地复制。
使用jQuery,您可以编写如下选择代码:
$('input[readonly]').focus(function(){
this.select();
});
我已更新示例以显示此行为:http://jsfiddle.net/hqBsW/2/
答案 2 :(得分:7)
听起来像个臭虫!
有a similar bug (396542)与Mozilla打开,说光标应该在readonly
输入中闪烁 - 但这种行为感觉不对,闪烁的光标应该意味着,“你可以在这里打字。“
您应该评论该错误和/或提交新错误(使用Mozilla here和Microsoft here)!
与此同时,使用disabled
或使用JavaScript更改行为,正如@ nikmd23建议的那样,似乎是最好的解决方法。
答案 3 :(得分:4)
可以使用html和javascript
完成<input type="text" onfocus="this.blur()" readonly >
或全局使用jQuery
$(document).on('focus', 'input[readonly]', function () {
this.blur();
});
答案 4 :(得分:1)
我找到的唯一方法是
//FIREFOX
$('INPUT_SELECTOR').focus(function () {
$(this).blur();
});
//INTERNET EXPLORER
$('INPUT_SELECTOR').attr('unselectable', 'on');
KENDO
$('.k-ff .k-combobox>span>.k-input').focus(function () {
$(this).blur();
});
$('.k-ie .k-combobox>span>.k-input').attr('unselectable', 'on');
答案 5 :(得分:1)
对于仅CSS
的修复程序,请使用:
input[readonly] {
pointer-events: none;
}
答案 6 :(得分:0)
您可以使用css
:
input {pointer-events:none;}
参考:https://developer.mozilla.org/pt-BR/docs/Web/CSS/pointer-events
答案 7 :(得分:-2)