作成日: 2017/12/22 最終更新日: 2017/12/22
文書種別
制限事項
発生環境
IE11、Microsoft Edge
詳細
クライアント側のonfocusoutイベントでSetFocusメソッドを実行して、イベントが発生したコントロールにフォーカスを戻すと、その後の入力処理が不正になります。
Chromeでは問題ありませんが、IEとEdgeで問題が発生します。
Chromeでは問題ありませんが、IEとEdgeで問題が発生します。
回避方法
以下のようなJavaScriptで回避することができます。
IEではonfocusoutではなく、onblurイベントで処理すると問題ありません。
EdgeではsetTimeoutからSetFocusします。
[JavaScript]
<script type="text/javascript">
var trident = !!navigator.userAgent.match(/Trident¥/7.0/);
var net = !!navigator.userAgent.match(/.NET4.0E/);
var IE11 = trident && net;
var IEold = (navigator.userAgent.match(/MSIE/i) ? true : false);
var IE = IE11 || IEold;
var Edge = window.navigator.userAgent.indexOf("Edge") > -1;
var chrome = /chrome/.test(navigator.userAgent.toLowerCase()) && !Edge;
var isiPad = navigator.userAgent.match(/iPad/i) != null;
function SetFocusOnBlur() {
if (IE) {
SetFocusControl();
} else if (Edge) {
setTimeout(function () {
SetFocusControl();
}, 0);
}
}
function SetFocusOnFocusOut() {
if (chrome || isiPad) {
SetFocusControl();
}
}
function SetFocusControl() {
FindIMControl("GcNumber1").SetFocus();
}
</script>
[Aspx]
<im_number:GcNumber ID="GcNumber1" runat="server" HasLoadFromXml="True" HighlightText="True">
<clientevents>
<StandardClientEvents onblur="SetFocusOnBlur" onfocusout="SetFocusOnFocusOut" />
</clientevents>
<DropDown /><helpvalue value = "0" ></helpvalue>
</im_number:GcNumber>
IEではonfocusoutではなく、onblurイベントで処理すると問題ありません。
EdgeではsetTimeoutからSetFocusします。
[JavaScript]
<script type="text/javascript">
var trident = !!navigator.userAgent.match(/Trident¥/7.0/);
var net = !!navigator.userAgent.match(/.NET4.0E/);
var IE11 = trident && net;
var IEold = (navigator.userAgent.match(/MSIE/i) ? true : false);
var IE = IE11 || IEold;
var Edge = window.navigator.userAgent.indexOf("Edge") > -1;
var chrome = /chrome/.test(navigator.userAgent.toLowerCase()) && !Edge;
var isiPad = navigator.userAgent.match(/iPad/i) != null;
function SetFocusOnBlur() {
if (IE) {
SetFocusControl();
} else if (Edge) {
setTimeout(function () {
SetFocusControl();
}, 0);
}
}
function SetFocusOnFocusOut() {
if (chrome || isiPad) {
SetFocusControl();
}
}
function SetFocusControl() {
FindIMControl("GcNumber1").SetFocus();
}
</script>
[Aspx]
<im_number:GcNumber ID="GcNumber1" runat="server" HasLoadFromXml="True" HighlightText="True">
<clientevents>
<StandardClientEvents onblur="SetFocusOnBlur" onfocusout="SetFocusOnFocusOut" />
</clientevents>
<DropDown /><helpvalue value = "0" ></helpvalue>
</im_number:GcNumber>
旧文書番号
41457