[Utah]二択メッセージ(confirm)キャンセル後にonChangeが動作する

norio kondo
Tera Contributor

Workspaceに実装した画面にて下記の操作を行うと⑤の事象が発生します。
事象の原因や対処方法についてご教示いただけないでしょうか。
環境:Utah patch7a

①参照項目「Aコード」にコード値を手入力し、表示された候補を選択する(フォーカスアウト)。
②クライアントスクリプト(onChange)にて二択メッセージ(confirm)を表示。
③二択メッセージでキャンセルを選択する(onChangeの後続処理で変更前のAコードに戻す)。
④二択メッセージが閉じて「Aコード」が元に戻る。
⑤画面上の適当なエリアをクリックすると、同じ二択メッセージが再度表示されてしまう。

※クライアントスクリプト(onChange)内で「Aコード」を更新する(元に戻す)ので、それをトリガにクライアントスクリプト(onChange)が呼ばれるのは対処済み( g_scratchpad.isCanceled で制御)。
※「Aコード」の虫眼鏡をクリック=>子画面でAコードを選択した場合は再現しない。


コード例

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }

    if (g_scratchpad.isCanceled) {
        g_scratchpad.isCanceled = false;
        return;
    }

    if (g_scratchpad.previousValue != newValue {
        getMessage('MessageXXXXX', function(msg) {
            if (confirm(msg)) {
                g_scratchpad.previousValue = newValue;
            } else {
                g_scratchpad.isCanceled = true;
                if (g_scratchpad.previousValue != undefined) {
                    g_form.setValue('u_code_A', g_scratchpad.previousValue); // Aコード
                } else {
                    g_form.setValue('u_code_A', oldValue); // Aコード
                }
            }
        });
    }



0 REPLIES 0