テキストボックスクリックをシミュレートしてフォーカスを取得します

StackOverflow https://stackoverflow.com/questions/4459342

  •  10-10-2019
  •  | 
  •  

質問

Focus()関数がIE8で機能していないため、ボタンをクリックしながら、テキストボックスでクリックイベントを発射するために次のコードを試しています。

function simulateClick(elm) {
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, true, window,
      0, 0, 0, 0, 0, false, false, false, false, 0, null);
  var canceled = !elm.dispatchEvent(evt);
  if(canceled) {
     // A handler called preventDefault
     // uh-oh, did some XSS hack your site?
  } else {
     // None of the handlers called preventDefault
     // do stuff
  }
}

このコードは、要素がタイプのチェックボックスであるがテキストボックスではない場合に正常に機能しますが、追加する必要があるかもしれないものはありますか?

役に立ちましたか?

解決

これがフォーカスのコードです

function ResponseEnd(sender, args) {
        if (args.get_eventArgument().indexOf("Filter") != -1) {
            var grid = document.getElementById("<%= radGridEnquiries.ClientID %>");
            var label =  $(grid).children("table").children("tbody").children(".rgRow").children("td:has(span)").children("span")[0];
            if (label != null) {
                label.focus();
            }
            else {
                var noRecTemp = $(grid).children("table").children("tbody").children("tr.rgNoRecords").children("td:has(div)").children("div");
                noRecTemp.focus();
            }
        }

        if (postInProgress)
            postInProgress = false;
    }

実際のシナリオは、Telerik Radgridにフィルターとして設定されたテキストボックスがあり、フィルターアイコンがないことですが、ユーザーがフィルターを投稿し、IE8にリクエストが完了した場合、フィルターテキストボックスはまだフォーカスがあり、クリックしない限りユーザーが新しいフィルターを入力しないようにします。テキストボックスで手動で再び

この投稿が回答と見なされているが、適切なインデントコードでこの質問を更新できなかった場合、PS申し訳ありません。ありがとう

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top