スクリプトを利用してオブジェクトの内容を取得する

✔ 概要

入力フォームで使用するスクリプト処理を実装する場合に基本となる、フォーム上のオブジェクトを取得する方法を説明します。

フォーム形式により、設定方法が異なります。

フォームの場合

ここでは以下の操作について説明します。

ヒント

以降の説明のうち、一部の操作では、入力フォーム上のオブジェクトの値を参照・更新するための JavaScript の API を利用します。
このAPIは、iftc.cwf.api.Forms という名前空間で公開されています。
JavaScript API リファレンス もあわせて参照ください。

設定方法

JavaScript で以下のように記述します。
  • 単一オブジェクトの取得

    単一のオブジェクトを取得します。
    例として、入力テキストオブジェクト「ITEXT000」の入力値を取得し、内容をメッセージ表示します。

    // 該当オブジェクト(ITEXT000)の入力値を取得
    var val = document.getElementsByName('ITEXT000')[0].value;
    alert('ITEXT000 の入力値 : ' + val);
    

    ヒント

    対象のオブジェクトが、マルチフォームが設定されたフォームの ページごとに区別するオブジェクト の場合、 「マルチフォームが設定されたフォームのオブジェクトの取得」の方法で取得してください。

  • 複数の同名オブジェクトの取得

    ラジオボタンなど複数の同名オブジェクトが存在する場合には以下のように取得します。
    例として、ラジオボタンオブジェクト「IRADIO000」を取得し、選択状態をメッセージ表示します。

    // ラジオボタンオブジェクトの配列を取得
    var radio = document.getElementsByName('IRADIO000');
    
    // ラジオボタン数分の内容を取得
    var len = radio.length;
    for(var i=0 ; i < len ; i++){
        // ラジオボタンの書き出し値に設定した値とチェック状態を表示
        // チェック状態には チェック時は「true」 未チェック時は「false」が表示
        alert(radio[i].value + " の選択状態 : " + radio[i].checked);
    }
    

    ヒント

    対象のオブジェクトが、マルチフォームが設定されたフォームの ページごとに区別するオブジェクト の場合、 「マルチフォームが設定されたフォームのオブジェクトの取得」の方法で取得してください。

  • マルチフォームが設定されたフォームのオブジェクトの取得

    マルチフォームが設定されたフォームは、同一のフォームを申請時に最大10ページまで追加できます。
    マルチフォームが設定されたフォームで、ページごとに区別するオブジェクト については、ページ数を考慮してオブジェクトを取得する必要があります。
    例として、フォーム識別子「FORM02」のフォームに配置した入力テキストオブジェクト「ITEXT000」の全ページ分の入力値を取得し、内容をメッセージ表示します。

    // APIをインスタンス化
    var forms = new iftc.cwf.api.Forms();
    
    // FORM02のページ数を取得
    var pageCnt = forms.getPageCount('FORM02');
    
    var msg = "";
    // ページ数分取得処理を実施
    for(var i=1 ; i <= pageCnt ; i++){
        // getElementsByName() でFORM02の各ページのITEXT000オブジェクトを取得
        var val = forms.getElementsByName("ITEXT000" , "FORM02" , i)[0].value;
        msg = msg + "ページ" + i + " の値: " + val + "\r\n"
    }
    
    alert(msg.trim());
    

    ヒント

    ページごとに区別するオブジェクト

    • マルチフォームが設定されたフォームで、ページごとに入力内容を区別するオブジェクトは、Formエディター上で、 [オブジェクトのプロパティ] - [HTML]で「マルチフォームでオブジェクトをページごとに区別する」にチェックが付いています。

    • マルチフォームが設定されたフォームであっても、[オブジェクトのプロパティ] - [HTML]で「マルチフォームでオブジェクトをページごとに区別する」に チェックがないオブジェクトの場合、マルチフォーム設定のないフォームのオブジェクトと同様の方法で取得します。

  • フォーマットが設定された入力テキストの取得

    オブジェクトの [フォーマット] タブで、 [桁区切り] や [通貨記号] などのフォーマットを設定している場合、対象オブジェクトのvalue属性にはフォーマット後の値が格納されます。フォーマットなしの値を取得するには、以下のように記載します。
    例として、入力テキストオブジェクト「ITEXT000」のフォーマットなしの値をメッセージ表示します。

    // APIをインスタンス化
    var forms = new iftc.cwf.api.Forms();
    
    // フォーマットが設定されたオブジェクトの要素を取得
    var obj = document.getElementsByName("ITEXT000")[0];
    
    // getRawValue() でフォーマット未設定の値を取得しメッセージ表示
    var rawValue = forms.getRawValue(obj);
    alert("フォーマット未設定の値 : " + rawValue);
    

旧バージョン形式のフォーム(JSP)の場合

ここでは以下の操作について説明します。

ヒント

以降の説明のうち、一部の操作では、入力フォーム上のオブジェクトの値を参照・更新するための JavaScript の API (CwfJspFormUtil クラス)を利用します。
JavaScript API リファレンス もあわせて参照ください。

設定方法

JavaScriptで以下のように記述します。
  • 単一オブジェクトの取得

    単一のオブジェクトを取得します。
    例として、入力テキストオブジェクト「PTEXT000」の入力値を取得し、取得した内容をメッセージ表示します。

    // 該当オブジェクト(PTEXT000)の入力値を取得
    var val = document.getElementsByName('PTEXT000')[0].value;
    alert('PTEXT000 の入力値 : ' + val);
    
  • 複数の同名オブジェクトの取得

    ラジオボタンなど複数の同名オブジェクトが存在する場合には以下のように取得します。
    例として、ラジオボタンオブジェクト「PRADIO000」を取得し、選択状態をメッセージ表示します。

    // ラジオボタンオブジェクトの配列を取得
    var radio = document.getElementsByName('PRADIO000');
    
    // ラジオボタンの内容を取得
    var len = radio.length;
    for(var i=0 ; i < len ; i++){
        // ラジオボタンの書き出し値に設定した値とチェック状態を表示
        // チェック状態には チェック時は「true」 未チェック時は「false」が表示
        alert(radio[i].value + " の選択状態 : " + radio[i].checked);
    }
    
  • 桁区切りが設定された入力テキストの取得

    オブジェクトの [フォーマット] タブで [桁区切り] のフォーマットを設定し「桁区切の表記方法- 入力時(JSP)も有効とする」にチェックしている場合、対象オブジェクトのvalue属性にはフォーマット後の値が格納されます。
    フォーマットなしの値を取得するには、JavaScript の API(CwfJspFormUtil.cwfWithoutSeparator())を利用します。
    例として、入力テキストオブジェクト「PTEXT000」のフォーマットなしの値をメッセージ表示します。

    // CwfJspFormUtil.cwfWithoutSeparator() を利用しフォーマット未設定の値を取得
    var val = CwfJspFormUtil.cwfWithoutSeparator(document.getElementsByName("PTEXT000")[0].value);
    alert("フォーマット未設定の値 : " + val);
    

旧バージョン形式のフォーム(PDF)の場合

ここでは以下の操作について説明します。

設定方法

Acrobat JavaScriptで以下のように記述します。
  • 単一オブジェクトの取得

    単一のオブジェクトを取得します。
    例として、入力テキストオブジェクト「PTEXT000」の入力値を取得し、取得した内容をメッセージ表示します。

    // 該当オブジェクト(ITEXT000)の入力値を取得
    var val = this.getField("PTEXT000").valueAsString;
    app.alert('PTEXT000 の値 : ' + val);
    
  • 複数の同名オブジェクトの取得

    ラジオボタンなど複数の同名オブジェクトが存在する場合には以下のように取得します。
    例として、ラジオボタンオブジェクト「PRADIO000」を取得し、選択状態をメッセージ表示します。

    // ラジオボタンオブジェクトの書き出し値をカンマ区切りで取得
    var values = this.getField("PRADIO000").exportValues;
    
    // 選択されているラジオボタンの書き出し値の取得
    var select = this.getField('PRADIO000').value;
    
    // ラジオボタンの選択肢(書き出し値)と選択値を表示
    // 選択値は チェック時は選択したラジオボタンの書き出し値、 未チェック時は「Off」が表示
    var txt = 'PRADIO000 の選択肢 : ' + values + '\n' +
              '現在の選択値 : ' + select;
    app.alert(txt);
    

ヒント

Acrobat JavaScript では値の取得形式により記載方法が異なります。用途に応じて記載してください。
以下に「020」が入力された入力テキストオブジェクト「PTEXT000」の入力値を取得し、内容をメッセージ表示するスクリプトを示します。

◇入力値を「文字列」として取得
// 該当オブジェクト(ITEXT000)の入力値を取得
var val = this.getField("PTEXT000").valueAsString;
// PTEXT000 : 020 が表示される
app.alert('PTEXT000 の値 : ' + val);
◇入力値を「数値」として取得
// 該当オブジェクト(ITEXT000)の入力値を取得
var val = this.getField("PTEXT000").value;
// PTEXT000 : 20 が表示される
app.alert('PTEXT000 の値 : ' + val);