激凹みから立ち直る方法

PDFにインタラクティブフィールド(フォーム)を作成してあります。
そのうち、ラベルが 1_totalE ~31_totalの名前が付いたフィールド31個があります。
それぞれは、自動計算で結果が入力されてきます。
[例] 以下フィールドの名前を[]で囲んで示します。
[1_total] については、[1_am]と[1_pm]フィールドの値を足しています。
  これは、それぞれのフィールドのプロパティ⇒計算⇒次のフィールドの和を返す。
  でスクリプトを書かなくても良いので設定できています。
最終的に
 [1_am]、[1_pm]⇒自動計算⇒[1_total]
 [2_am]、[2_pm]⇒自動計算⇒[2_total]
・・・という形で、[1_total]から[20_total]までは、[1_am]などに入力があれば、その計が自動的に入ってきます。
その上で、[nissuu]フィールドに、[1_total]~[31_total]の値(計算結果)が1以上の場合、そのフィールド個数を自動計算して入れたい。
 別途、[pm_total]の値などは、単に簡易入力で同様に入力されますから出来上がっています。

 判らないのは、acrobatにユーザースクリプト枠に記述するjavascriptです。

 他にもあるのですが、内容が異なるために別質問にさせていただきます。

A 回答 (2件)

A No1です。



>8行目は
>if(parseFloat(val) >= 1) total++;
>ですよね。
はい。ご指摘の通りです。 大変失礼いたしました。
(手動インデントの際に消してしまったらしい…)

>しかし、formに出力されない。
こちらでは、「Adobe Acrobat 9 Pro」で一応動作の確認をしています。

表示されない原因として、すぐに思いつくのは、
1) フィールド名が合致しない(又は存在しない)などで、エラーとなり
  実行が中断されている。
2)そもそも、スクリプトに処理が移っていない。
あたりではないかと。

1)は、[1_total]~及び[nissuu]を確認して、スクリプト中のmaxNoを小さくして実行させてみれば確認できそうです。
2)は実行のタイミングをどのように設定していらっしゃるかによるので、こちらではわかりかねますが、スクリプトの最初に仮のフィールドに出力するとか、あるいはalert表示( app.alert("calculating…"); とか)をさせてみるなどで、スクリプトが実行されているかの確認ができるかと思います。

Acrobatに、デバッグ用のコンソールが附属しているようですので、使い方をご存知であれば原因の確認に役立つのではないかと思います。(私は使ったことがないので、使用方法を知りませんけれど・・・)
    • good
    • 0

Acrobatのスクリプトは使ったことがないので、まったくわかりませんが・・・




ドキュメントの拾い読みで実験してみたところ、以下で動作すると思います。
各フィールドの値がどのような範囲を取りうるのか不明なので、とりあえずparseFloatで判断するようにしてあります。

AcrobatのScriptのドキュメントを以下から入手できます。
http://www.adobe.com/jp/support/products/pdfs/ac …
少々バージョンが古いですが、基本的な部分は同じと想像しますので、参考にできるでしょう。
(以下も、このドキュメントを参考に記述しています)

(インデントは全角空白にしてあります)
function test()
{
 var maxNo = 31;
 var i, val, total = 0;

 for(i=1; i<=maxNo; i++){
  val = this.getField(i+"_total").value;
  f(parseFloat(val) >= 1) total++;
 }
 this.getField("nissuu").value = total;
}

この回答への補足

ご回答ありがとうございました。
8行目は
if(parseFloat(val) >= 1) total++;
ですよね。
 しかし、formに出力されない。

少し調べてみます。

補足日時:2013/05/10 10:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!