Chr*_*ian 6 javascript jquery internet-explorer
我有一个奇怪的错误,好吧,MSIE.
似乎它在所有主要的MSIE版本上都失败了:6,7,8和9(!)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb" ><head><title>test</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
var test=jQuery('#in');
test.focus(function(){
if(test.val()=='empty')test.val('');
test.attr('readonly',false);
});
test.blur(function(){
if(test.val()=='')test.val('empty');
test.attr('readonly',true);
});
});
</script>
</head><body>
<input type="text" value="empty" readonly="readonly" id="in"/>
</body></html>
Run Code Online (Sandbox Code Playgroud)
让我解释一下这个系统是如何工作的以及出了什么问题.
当用户单击(聚焦)输入框时,应使输入框可编辑(即丢失只读标志).然后,当他/她离开输入框(即模糊事件)时,完成一些处理(未在代码中示出)并且输入框是只读的.
这在大多数浏览器(firefox,opera,基于webkit)中都很有魅力,但不是任何版本的IE(包括9 beta).问题是在IE中,用户必须单击输入框两次.
此时,您可能会问第一次输入框是否只读?不,我测试了它,javascript报告它是可编辑的.
轻松修复,只需在输入框上触发点击事件(模拟用户的双击行为),不是吗?没有,.click()并且.focus()都失败了.不知道为什么.
编辑:知道光标确实显示在文本框中,至少是明显的.
重要提示:人们,请在回答前至少尝试一下代码!
我不会说这是一个错误.如果更改该值,则还会删除当前的textRange.
尝试test.select(),它应该将光标返回到输入.
test.focus()
Run Code Online (Sandbox Code Playgroud)
将导致一个以"内存不够"为止的循环 - 错误.
| 归档时间: |
|
| 查看次数: |
12975 次 |
| 最近记录: |