0

誰かが私を助けることができます..

ページの読み込み時にデフォルトで読み取り専用のテキスト ボックスがあります。このテキスト ボックスのクリック イベントでは、2 つのことを行う必要があります。

  • 編集可能にする
  • テキストボックスにフォーカスを保つ

このremoveAttrために、編集可能にするコードを作成してから、それにfocus()焦点を当てています。

期待どおり、IE8+、FF、Chrome で動作しています。ただし、クライアントの互換性のあるブラウザーのリストに IE7 があるため、IE7 でも動作させる必要があります。

注:問題はフォーカスのみであり、クリックするとテキストボックスが編集可能になります。ただし、フォーカスを維持するには 2 回目のクリックが必要です。最初のクリックのみで行われることを期待しています。

<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 の病気の 1 つは、ほとんどのイベントで 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 に答える