Javascript Internet Explorer中的只读输入框错误
我有一个奇怪的错误,嗯,MSIE有 似乎它在所有主要的MSIE版本上都失败了:6、7、8和9(!)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(
测试
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/>