0

有人能帮我吗..

我有一个文本框,在页面加载时默认为只读。在此文本框的单击事件中,我必须做两件事。

  • 使其可编辑
  • 专注于文本框

为此,我编写了一个代码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();
});
4

2 回答 2

2

IE 的一个毛病是大多数事件不会自动更新 DOM。您所做的是取消焦点元素并再次将其聚焦以使其可编辑。

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

$("#testId").click(function () {
   $(this).removeAttr("readonly").blur().focus();
});
于 2013-01-04T13:31:28.093 回答
0

尝试为focus.

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

(从这里

于 2013-01-04T12:38:42.200 回答