スクリプトでオブジェクトの値を変更したがonChangeイベントが実行されない
公開日:2020/06/19
- クラウド
- V5.4
- V5.3
- V5.2
- V5.1
- V5.0
- V4.3
- V4.2
- V4.1
- V4.0
JavaScriptで入力テキストの値を変更しても、該当入力テキストのonChangeイベントが実行されません。
JavaScriptで値を変更しても、イベントは実行されないのでしょうか。
JavaScript の仕様上、value属性で値を変更しても[onChange]イベントは実行されません。
そのため、JavaScriptで値を変更した場合は、値を変更したオブジェクトの[onChange]イベントを
意図的に実行する必要があります。
[onChange]イベントの実行方法は、以下フォーム形式毎の内容をご確認ください。
・フォームの場合
・旧バージョン形式のフォーム(JSP)/JSPフォームの場合
◆フォームの場合
ここでは例として[onChange]イベントが設定された「ITEXT000」の値を更新した後に、
このオブジェクトの[onChange]イベントを実行する方法を説明します。
以下処理を参考に、値変更後に[onChange]イベントを実行してください。
【サンプル処理】
// APIをインスタンス化
var forms = new iftc.cwf.api.Forms();
// ITEXT000の要素を取得
var obj = document.getElementsByName("ITEXT000")[0];
// ITEXT000の値を「after」で更新
obj.value = 'after';
// イベントを実行するオブジェクトと実行するイベント名(onChange)を引数に指定しイベントを実行
forms.invokeEvent(obj, "onChange");
詳細は、以下マニュアルをご参照ください。
─────────────────────────
ワークフローシステム 逆引きガイド
- システムの操作・設計
- フォームの作成
- JavaScriptの設定と基本の操作
- スクリプトを利用してオブジェクトの内容を更新する
- フォームオブジェクトのイベント実行
─────────────────────────
◆旧バージョン形式のフォーム(JSP)/JSPフォームの場合
ここでは例として[onChange]イベントが設定された「PTEXT000」の値を更新した後に、
このオブジェクトの[onChange]イベントを実行する方法を説明します。
以下処理を参考に、値変更後に[onChange]イベントを実行してください。
【サンプル処理】
// イベントを実行するオブジェクトを変数に格納
var targetObj = document.getElementsByName("PTEXT000")[0];
// 実行するイベント名を変数に格納
var targetEvent = "onChange";
// 値を更新
targetObj.value = "after";
//対象のオブジェクトにイベントが設定されているか判定
if(targetObj.getAttribute(targetEvent) != null){
//入力テキストのイベントの内容を変数に格納
var strFun = new String(targetObj.getAttributeNode(targetEvent).value);
strFun = strFun.replace(/this/g,"targetObj");
//入力テキストのイベントを実行
eval(strFun);
}
詳細は、以下マニュアルをご参照ください。
─────────────────────────
ワークフローシステム 逆引きガイド
- システムの操作・設計
- フォームの作成
- JavaScriptの設定と基本の操作
- スクリプトを利用してオブジェクトの内容を更新する
- フォームオブジェクトのイベント実行
─────────────────────────
※V4をご利用の場合、上記マニュアルの「旧バージョン形式のフォーム(JSP)の場合」をご参照ください。
V5のマニュアルとはなりますが、同様の記述で実行が可能です。
アンケート
この質問・回答は役に立ちましたか?