Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Internet Explorer中的只读输入框错误_Javascript_Jquery_Internet Explorer - Fatal编程技术网

Javascript Internet Explorer中的只读输入框错误

Javascript Internet Explorer中的只读输入框错误,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,我有一个奇怪的错误,嗯,MSIE有 似乎它在所有主要的MSIE版本上都失败了:6、7、8和9(!) 测试 jQuery(文档).ready(函数(){ var test=jQuery('#in'); test.focus(函数(){ if(test.val()=='empty')test.val(“”); test.attr('readonly',false); }); test.blur(函数(){ if(test.val()='')test.val('empty'); test.attr(

我有一个奇怪的错误,嗯,MSIE有

似乎它在所有主要的MSIE版本上都失败了:6、7、8和9(!)


测试
jQuery(文档).ready(函数(){
var test=jQuery('#in');
test.focus(函数(){
if(test.val()=='empty')test.val(“”);
test.attr('readonly',false);
});
test.blur(函数(){
if(test.val()='')test.val('empty');
test.attr('readonly',true);
});
});
让我解释一下这个系统是如何工作的,出了什么问题

当用户单击(聚焦)输入框时,输入框应可编辑(即,丢失只读标志)。然后,当他/她离开输入框(即模糊事件)时,会进行一些处理(代码中未显示),并使输入框成为只读

这在大多数浏览器(firefox、opera、基于webkit的浏览器)中都很有魅力,但在IE的任何版本(包括9 beta版)中都没有。 问题是,在IE中,用户必须单击输入框两次

此时,您可能会问,inputbox是否第一次保持只读状态? 没有。我测试过,javascript报告它是可编辑的

简单修复,只需在输入框上触发一个点击事件(模拟用户的双击行为),不是吗? 否,
.click()
.focus()
都失败。不知道为什么

编辑:知道光标确实显示在文本框中,至少是可见的

重要提示:各位,请在回答之前至少尝试一下密码

我不会说这是一只虫子。 如果更改该值,也会删除当前的textRange

尝试
test.select()
,它会将光标返回到输入

test.focus()

将导致以“内存不足”错误结束的循环

我认为
readonly
应该是
readonly
。你切换这个属性似乎很奇怪。您也可以尝试删除它

jQuery("#foo").removeAttr("readOnly"); //.removeAttr("readonly");

试试这个,我刚试过那个,效果很好:

<input type="text" value="empty" id="in" readonly/>


如果点击一次就可以编辑,为什么还要将其设置为只读?这很难解决问题,也不是一个建设性的答案。这就是为什么它只是一个评论而不是一个答案。@meager-多么晴朗的一天啊!你不同意吗?嗯?它是“只读”的,MSIE似乎将其更改为“只读”,但它也可以正常工作。再说,这已经不是我的问题了。你好!我会尽快试一试。但是,我确实成功地使用了.focus(),就像在中一样,我没有遇到这样的错误。但正如我所说,它没有起作用。哦,这很重要,要知道光标实际上在输入框内,至少可以看得见。(编辑的问题)
test.select()
修复了问题,谢谢!但是
test.focus()
没有。
<input type="text" value="empty" id="in" readonly/>