只读false,然后是焦点,在例7中不起作用



谁能帮我一下……

我有一个文本框,默认情况下是只读的页面加载。在点击这个文本框的事件时,我必须做两件事。

  • 使其可编辑
  • 关注文本框

为此,我写了一个代码removeAttr使其可编辑,然后focus()保持专注于它。

它可以在IE8+, FF, Chrome中工作。但是我需要让它在IE7中工作,因为我们在客户端的兼容浏览器列表中有IE7。

注意:问题只与焦点有关,点击后文本框变为可编辑。但需要第二次点击来保持焦点。期望它只在第一次点击时完成。

<input name="testId" id="testId" size="25" maxlength="40"  tabindex="21" class="width250" readonly="true"/>
$("#testId").click(function(){
   $(this).removeAttr("readonly");
   $(this).focus();
});

IE的弊病之一是大多数浏览器不自动更新DOM。你要做的就是取消元素的焦点,然后重新聚焦,使其可编辑。

试试这个方法,它会解决你的问题在IE

$("#testId").click(function () {
   $(this).removeAttr("readonly").blur().focus();
});

尝试设置focus的超时时间。

$("#testId").click(function(){
   $(this).removeAttr("readonly");
   setTimeout(function() {$(this).focus(); }, 10);
});

(离这里)

最新更新