テキストコントロールでonchangeクライアント側イベントが不正に発生する場合がある
対象製品
InputMan for ASP.NET 8.0J
状況
修正済み
詳細
テキストコントロールで文字入力中にDeleteまたはBackSpaceキーを使用すると、コントロールからフォーカスが移動する際にonchangeクライアント側イベントが2回発生してしまいます。
また、未入力のテキストコントロールに文字を入力し、入力した文字をDeleteやBackSpaceキーで削除してからフォーカスを移動した場合にもonchangeクライアント側イベントが発生してしまいます。
また、未入力のテキストコントロールに文字を入力し、入力した文字をDeleteやBackSpaceキーで削除してからフォーカスを移動した場合にもonchangeクライアント側イベントが発生してしまいます。
回避方法
この問題はService Pack 4(v8.0.2016.1130)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。
Service Pack 4より前のバージョンでは、次の方法で回避可能です。
以下のようにonchangeクライアント側イベント内で入力値の変更有無をチェックすることで回避可能です。
[JavaScript]
<script language="javascript" type="text/javascript">
var lastValue;
function GcTextBox_onchange() {
var text = FindIMControl("GcTextBox1").GetText();
if (text != lastValue) {
lastValue = text;
DoWork();
}
}
function DoWork() {
// onchangeイベントの処理
}
</script>
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。
Service Pack 4より前のバージョンでは、次の方法で回避可能です。
以下のようにonchangeクライアント側イベント内で入力値の変更有無をチェックすることで回避可能です。
[JavaScript]
<script language="javascript" type="text/javascript">
var lastValue;
function GcTextBox_onchange() {
var text = FindIMControl("GcTextBox1").GetText();
if (text != lastValue) {
lastValue = text;
DoWork();
}
}
function DoWork() {
// onchangeイベントの処理
}
</script>