FAQ

スクリプトでオブジェクトの値を変更したがonChangeイベントが実行されない

公開日:2020/06/19

  • クラウド
  • V5.4
  • V5.3
  • V5.2
  • V5.1
  • V5.0
  • V4.3
  • V4.2
  • V4.1
  • V4.0

Question

JavaScriptで入力テキストの値を変更しても、該当入力テキストのonChangeイベントが実行されません。
JavaScriptで値を変更しても、イベントは実行されないのでしょうか。


Answer

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のマニュアルとはなりますが、同様の記述で実行が可能です。

アンケート

この質問・回答は役に立ちましたか?

このページのよい点、悪い点を教えてください!FAQ改善の参考とさせていただきます。

  • 個人情報は入力されないようご注意ください。
    弊社からの回答をご希望の場合は、画面上部のメニューより「お問い合わせ」をご利用ください。
  • 最後に「送信」を押すことでコメントが送信されます。

検索