「夫を成功」へ導く妻の秘訣 座談会

前回も投稿し教えていただたいたのですが、あと一つ解決していないので再度、投稿致します!

PDFフォームにてドロップダウン(Bフィールド)の項目を選び、入力フォーム(Aフィールド)で数量をうちこんだら予め設定した金額(Cフィールド)が表示するという事がしたいです。

前回は入力フォームにて数量をうちこんだら金額が表示するというスクリプトを教えていただいたのですが、今回はドロップダウンの何種類かある項目を選び、数量をうちこんだら金額が表示するというスクリプトを教えていただけないでしょうか?

1.数に予め設定した金額を表示させるようにしたいです。
 1本→¥500 2本~3本→¥900  4本~11本→¥1,000

2.ドロップダウンで選んだ項目は「鉄パイプ裁断加工賃」と「研磨加工賃」と選べるようにして選んだ項目ごとに金額を変えるように出来ないかと考えております。

鉄パイプ加工賃 1本 ¥500 2本~3本→¥900  4本~11本→¥1,000
研磨加工賃 1本 ¥400 2本~3本→¥800  4本~11本→¥900

厚かましいお願いですがアドバイスよろしくお願いします!

「PDFフォームで条件つき金額を表示させる」の質問画像

質問者からの補足コメント

  • うーん・・・

    前回教えていただきましたスクリプトです。
    入力フォームにて数量をうちこんだら金額が表示するというスクリプトです。
    本数(Aフィールド) 1を記入したら 1本 ¥500 2本~3本→¥900  5本~11本→¥1,000 が表示(Cフィールド)されるようになっています。

    var f1 = this.getField("Text1");
    var f2 = this.getField("Text2");
    var p = 500, v = parseInt(f1.value);

    if(isNaN(v) || v<1){
     f2.value = "";
     app.alert("有効な数値を入力してください");
    } else {
     if(1<v){ p = 900; }
     if(4<v){ p = 1000; }
     f1.value = v;
     f2.value = "\\" + p;
    }

      補足日時:2016/07/21 21:45
  • うれしい

    ありがとうございます!
    またまた、お世話になります!!!
    指示通り、やってみたところ、すんなり出来ました!!!!
    Adobeさんにも聞いていただいたようで本当にありがとうございます!
    今までは簡易的な計算式(+,-,/,*)程度でPDFフォーム作りをやっていたのですが、今回JavaScriptを使用するPDFフォームはまさに未知体験でした! 笑
    今回教えていただきましたJavaScriptは想像以上に難しいのですね!
    考えが浅はかでした 笑

      補足日時:2016/07/22 15:49
  • うれしい

    教えていただきましたjavaをもとに別フォーム及びドロップダウン項目を増やし作成しようと思っているのですが、Dフィールド(入力),Eフィールド(ドロップダウン),Fフィールド(表示)を作る場合 var va = AFMakeNumber(getField("A").value); var vb = AFMakeNumber(getField("B").value); の下に var va = AFMakeNumber(getField("D").value); var vb = AFMakeNumber(getField("E").value); と記述する形で宜しいのでしょうか?
    また、テキストAフィールドの 開始値:0, 終了値 11 とドロップダウン Bドロップダウン 書き出し値:1 は どのような働きをするのでしょうか?

      補足日時:2016/07/22 15:50
  • うーん・・・

    なるほど開始値と終了値は数値の設定なのですねすごいです~!
    試しに20を入力したらポップアップが表示されました!

    書き出し値はPDF上で表示されている値との事ですが...すみませんわかりません,,,,,
    試しに鉄パイプ裁断加工賃 書き出し値:0 研磨加工賃:1 追加したい場合→木材カット工賃:2 で宜しいのでしょうか?
    event.value= (function(){
    var va = AFMakeNumber(getField("A").value); ←なんとなくわかりました笑
    var vb = AFMakeNumber(getField("B").value);
    var result = "", i, idx = 0; ←どのような働きをするのでしょうか?

      補足日時:2016/07/22 18:09
  • var bounds = [ 1,2,4 ];  ←境界? どのような働きをするのでしょうか?
    var cost = [[ 500,900,1000 ], [ 400,800,900 ]]

    if(va){ ←条件命令かなと
    for(i=0; i<bounds.length; i++) if(va>=bounds[i]) idx = i; ←どのような働きをするのでしょうか?
    result = cost[vb][idx];←どのような働きをするのでしょうか?
    }
    return result;
    })();

    すみません。わからないことだらけですが、ご指導よろしくお願いします。

      補足日時:2016/07/22 18:10
  • うーん・・・

    お世話になります!

    試行錯誤しながらやってみたところ、別フォームを作成し同じスクリプトで動かすことは成功いたしました!

    あと一つ、わからないのがドロップダウンの項目を増やす方法です!
    現状況
    鉄パイプ加工賃 1本 ¥500 2本~3本→¥900  4本~11本→¥1,000
    研磨加工賃 1本 ¥400 2本~3本→¥800  4本~11本→¥900

    ドロップダウンに何種類か追加する場合のスクリプトの記述方法がわからなく奮闘中でございます。
    鉄パイプ加工賃 1本 ¥500 2本~3本→¥900  4本~11本→¥1,000 書き出し値 0
    研磨加工賃 1本 ¥400 2本~3本→¥800  4本~11本→¥900 書き出し値 1

      補足日時:2016/07/23 16:17
  • うーん・・・

    追加したい項目
    折り曲げ加工賃 1本 ¥700 2本~3本→¥900  4本~11本→¥1500
    穴あけ加工賃 1本 ¥100 2本~3本→¥500  4本~11本→¥1200

    追加したい項目の書き出し値とjavaの記述内容はどのようにしたらよいのでしょうか?

      補足日時:2016/07/23 16:18

このQ&Aに関連する最新のQ&A

A 回答 (4件)

ANo1です



スクリプトでの計算方法はひとつに限っているわけではありません。
例えば、前回の質問は単純でしたので、場合分けをして値を設定しています。
今回も同様の方法でも可能ですが、少し変えて、下図のような表(赤枠内)を作成しておいて、それぞれのケース分けから表内の値を参照するという方法に変えています。
また、本数の入力が無い場合に結果欄に「\0」などと表示されるのはイマイチなので、この場合は空白になるように別に処理するようにしています。

前回に比べれば、今回の方法の方が少し一般化した解法になっていると言えるかもしれません。
例えば、加工の項目数を増やしたり、本数の場合分けを増やしたりする場合も、表を拡張すると考えれば、表のデータを変えることで拡張が可能になります。

>var result = "", i, idx = 0; ←どのような働きをするのでしょうか?
javascriptではvarは変数の宣言をする際に使用するもので、変数=値とすることで初期値を設定することも可能です。
その他の文法やPDF特有の構文などについては、ここの回答欄ではとても足りないと思いますので、前回回答で挙げました資料などを参照してください。
「PDFフォームで条件つき金額を表示させる」の回答画像4
    • good
    • 1
この回答へのお礼

できました~!!!!
図を作成していただきありがとうございます!

とてもわかりやすかったです!!

javaはいろんな方法があるのですね!
奥が深い.....

これで独自の見積りシュミレーターが作れそうです♪
とても楽しみです!

この度は初心者にやさしくおしえていただき、本当にありがとうございます!!!

言葉に表せられないくらい感謝しています!

お礼日時:2016/07/25 10:57

ANo1です。



記述間違いがありました。
テキストフィールドAの設定で

× (検証タブ) 値の範囲を指定  開始値:0、終了値:11
○ (検証タブ) 値の範囲を指定  開始値:1、終了値:11

ですね。1~11に規制したいので。
自分の方ではこのように設定していて、投稿時に書き間違えました。
(いろいろミスが多くて、すみません)
    • good
    • 0

ANo1です。



>Adobeさんにも聞いていただいたようで~~
ダイレクトに聞いたわけではありません。
ANo1に記載したAdobeサイトの各種説明等を調べたということを、少し擬人的に表現してみただけですので・・・
(誤解なさったのなら申し訳ないです。『聞いてみたけど~書いてない』で通じるかなと・・)

>今回JavaScriptを使用するPDFフォームはまさに未知体験でした!
私も、PDFでのjavascriptはほとんど未知体験です。

>今回教えていただきましたJavaScriptは想像以上に難しいのですね!
スクリプトの内容は決して難しいものではありません。
ただ、私がPDF要素とのインターフェースやスクリプトの実装方法をまったく知らなかっただけなのです。

> ~~と記述する形で宜しいのでしょうか?
値を取得するだけなら
 getField("フィールド名").value
で取得できます。
通常はフィールドの値は文字列で返されますが、AFMakeNumber()は、これを数値化するメソッドです。
(今回は扱う内容を数値に限定していますので)

>テキストAフィールドの 開始値:0, 終了値 11 ~~
入力値の規制をしています。
フォーマットで数値、少数以下0桁としていますので、整数しか入力を受付けないのですが、今回はさらに1~11の数値(及びブランク)のみに絞るためにこの指定を追加しています。
なぜこのようなことをするかと言えば、スクリプト側で入力値をチェックしなくてもよくなるからです。
(そうでない場合は、スクリプト側で、まず、おかしな数値や数値以外が入力されていないかをチェックする必要がでてきます。)
試しに20などの数字やhogeなどの文字を入力してみれば、設定の効果がわかると思います。

>ドロップダウン 書き出し値:1 は どのような働きをするのでしょうか?
項目名はPDF上で表示されている値を意味しています。
書き出し値はjavascriptなどで値を取得した際に返される値です。
(項目名が返されるわけではありません。内容を同じにしておけば同じものが返されますが)

※ 以上のような内容は、私もまったく知らなかったものですが、紹介したサイト(及び派生リンク)やドキュメントを読むことで取得が可能です。
とはいっても、超拾い読みしかしてませんので、内容的に正確かというとかなりあやしいものですので、そのおつもりでご覧になってください。
内容については、質問者様ご自身で、再度、確認なさるのが宜しいかと思います。
    • good
    • 0

こんにちは


前回回答者です。

前回の「Calculate」に関して、
 >プロパティでカスタム演算の編集にて教えていただいた文をコピペしておりました!
「計算」のタブが隠れていて見えなかったので、これにはまったく気が付いていませんでした!!
まさに、これが良さそうですね。(今更ながらですが・・・)
私が気付かなかっただけというオチみたいです。すみませんでした。
・・・とはいうものの、使い方がわからん。(汗)

わからないので、Adobeさんに聞いてみましたが、肝心の知りたいところは書いてないですね・・・
https://helpx.adobe.com/jp/acrobat/11/using/pdf- …
値の返し方さえわかれば、あとはなんとかなりそうなのですが・・・

いろいろ調べてもわからないので、勝手に試行錯誤。
(お蔭で、よく知らなかったフィールドについても多少知識を得ましたが)
どうやら、event.valueに値を返せばよさそうです。
(↑ちゃんと調べた上ではないので、正しいかどうかはわかりません)


・・・・と言うことで、一応、なんとか使い物になりそうな形になったかと。
(まず、前回回答はキャンセルしてスクリプトも削除しておいてください)

1)各フィールドには以下の設定をします。
(これにより入力値のチェック等が自動でできるので…)
・テキストフィールド A
 (フォーマットタブ) 分類:数値、 少数以下:0桁、 通貨記号:なし
 (検証タブ)     値の範囲を指定  開始値:0、 終了値:11
・ドロップダウン B
 (オプションタブ) 項目:鉄パイプ裁断加工賃、 書き出し値:0
            項目:研磨加工賃、       書き出し値:1
・テキストフィールド C
 (フォーマットタブ) 分類:数値、少数以下:0桁、桁区切り:3桁カンマ、通貨記号:¥

2)上記の設定後、Cのプロパティの計算タブにカスタム演算スクリプトとして以下を登録
(コピペできるように、インデントは省略してあります)
※ 入力後フォーカスをはずすかリターン入力で計算が反映されます。

event.value= (function(){
var va = AFMakeNumber(getField("A").value);
var vb = AFMakeNumber(getField("B").value);
var result = "", i, idx = 0;
var bounds = [ 1,2,4 ];
var cost = [[ 500,900,1000 ], [ 400,800,900 ]]

if(va){
for(i=0; i<bounds.length; i++) if(va>=bounds[i]) idx = i;
result = cost[vb][idx];
}
return result;
})();
    • good
    • 1

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPDFフォーム内で日付計算したいのです。

Adobe ACROBAT9PROを利用してフォームを2つ作り、一方のフォームに日付を入れると、もう一方のフォームに翌日の日付が入るようにしたいのですが、フォームのプロパテイ>フォーマット>日付>「形式」にmm/ddとセットした後に、フォームのプロパティ>計算>簡略化したフィールド表記>編集>「javascriptの作成と編集」に何を入れればいいのか、いくら探しても出て来ません。どなたか教えて下さい。お願いします。

Aベストアンサー

PDFのフォームもスクリプトも使ったことは無いので、まったくわかってませんが試してみました。
(なので、正しい方法かどうかは不明です)

とりあえずフォーム・フィールドはText1、Text2とし、それぞれの書式を「yyyy/mm/dd」にしておいて…

Text1のアクションで「フォーカスをはずしたら」、「javascriptを実行」として(その他でも良いです)おき、スクリプトに下記のものを入れたら、一応動作しました。

var dd = this.getField("Text1").value;
dd = new Date(util.scand("yyyy/mm/dd", dd).valueOf() + 24*60*60*1000);
this.getField("Text2").value = util.printd("yyyy/mm/dd", dd);

*書式やフィールド名など違う部分は適宜入替えてください。

QPDFフォームに本日の日付を自動で表示

ADOBE ACROBAT 9 STANDARDを使用し
PDFフォームを作成しています。

フォームをひらくと
特定のテキストフィールドに
自動で本日の日付が表示されるようにしたいのですが
(できれば和暦で)
可能でしょうか?

お願いいたします!

Aベストアンサー

PDFのスクリプトはほとんど知りませんが、以前、似たようなご質問があったときにテストしてみたことがあります。


コードは忘れてしまっているので、もはや意味不明ですが、基本的には、以下とほぼ同じでいけるのではないでしょうか。
http://oshiete.goo.ne.jp/qa/7056311.html

>(できれば和暦で)
Date()は基本的に西暦ベースなので、ご自分で変換functionを作成すればよろしいかと。
年号換算だけなので、江戸時代まで遡るとかいうのでない限りは大した手間ではないでしょう。
(正確に、昭和64年1月7日の翌日を平成1年1月8日とかするのだと、基準日を調査するのがちょっと手間かも)

QPDFフォームで条件つき金額を表示させるやり方 javascript

Adobe ACROBAT PROを利用してドロップダウンで選んだ項目とフォームで打ち込んだ数を別のフォームに金額表示させたいのですが、どなたかわかる方いらっしゃいますでしょうか??

1.数に予め設定した金額を表示させるようにしたいです。
 1本→¥500 2本~3本→¥900 5本~11本→¥1,000

Aベストアンサー

ANo1です。

Acrobatのエラーメッセージはほとんど見たことがないので、読み方もよく分からないのですが・・・
2、3試してみて、以下のエラーは発生できました。
どうやら処理を設定している場所が違うようですね。

<書式スクリプト>
InvalidSetError: 設定できません。無効または不明です。
Field.value:11:Field Text1:Format

<キーストローク>
InvalidSetError: 設定できません。無効または不明です。
Field.value:11:Field Text1:Keystroke

<カスタム検証>
InvalidSetError: 設定できません。無効または不明です。
Field.value:11:Field Text1:Validate

InvalidSetErrorとなっているので、設定自体が規則違反という意味のように思われます。
Format、Keystroke、Validateはそれぞれの設定方法に符合していますね。
想像するところ、実行時のエラーというわけでなく、設定時のエラーとして表示されているようです。
試しに、実行時のエラーを発生させてみると、以下のように1行目にエラー内容が表示されます。

<フィールドが取得できない場合>
TypeError: f1 is null
3:AcroForm:Text1:Annot1:OnBlur:Action1


しらみつぶしに見たわけではありませんが、ご提示のエラーのうちの「Calculate」に該当するものが探しても見つかりませんでした。どのような設定をすると発生するのでしょうか?

Acrobatの仕様がどうなっているのかは存じませんが、上記の3つは基本的にバリデーション用と思いますので、推測するところ、値の取得はできても設定ができないとかの制限があったりするのかも知れませんね。
ANo4で挙げておいたドキュメントの中を探せば、どこかにそのあたりの解説が出ているかもしれません。
(すみませんが、私には読んでいる時間はありませんが・・・)

エラーを探していろいろ発生させてみてわかりましたが、キーストロークを取る設定もできるようにはなっているようですね。(まったく気が付いていませんでした)
ANo3にも書きましたように、私は、OnBlurのイベントでスクリプトの実行をテストしています。
また、(これも既に書きましたが)OnBlurでは必ずしも使い勝手が良いとは思えないのですが、上記でキーストロークをキャッチすることが可能そうなので、リターンキーだったら計算するというような制御ができるのかも知れません。最悪の場合(処理内容に制限がある場合など)は、直接実行せずに、スクリプトからblurさせることでイベントを発生させて、間接的に処理を実行させるような方法が可能かも知れません。(このあたりは試してないのでわかりませんが…)

まずは(使い勝手はさておいて)、OnBlurで試してみてください。

ANo1です。

Acrobatのエラーメッセージはほとんど見たことがないので、読み方もよく分からないのですが・・・
2、3試してみて、以下のエラーは発生できました。
どうやら処理を設定している場所が違うようですね。

<書式スクリプト>
InvalidSetError: 設定できません。無効または不明です。
Field.value:11:Field Text1:Format

<キーストローク>
InvalidSetError: 設定できません。無効または不明です。
Field.value:11:Field Text1:Keystroke

<カスタム検証>
InvalidSetError: 設定できません。無効ま...続きを読む

QAcrobat Java Scriptについて教えてください。

お世話になります。
Acrobat JavaScriptの初心者ですが、以下の問題で困ってます。
使用環境:Acrobat 4.05で、PDFフォームにてテキスト型のフィールドA,B,Cを作成しております。やりたいことは、AとBにデータが入力されるとCにA+Bの文字列を代入したいです。
つまり、Aに”012”と入力され、Bに”034”と入力された時、Cには”012034”を入れたいのです。
そのためフィールドcの書式スクリプトに
var a;・・・・・・・・・・・・・・(1)
var b;・・・・・・・・・・・・・・(2)
a = this.getField("A").value;・・・(3)
b = this.getField("B").value;・・・(4)
event.value = a+b;・・・・・・・・(5)
の5行を記述していますが、どうも(3)、(4)行目の段階で"012"の"0",
"034"の"0"が消えてしまいます。
Acrobat5.0だと”valueAsString”のようなプロパティが追加されているようですが、Acrobat4.05の環境ではどうすればテキストの前のゼロを保留できるのでしょうか?
どなたが教えてください.

お世話になります。
Acrobat JavaScriptの初心者ですが、以下の問題で困ってます。
使用環境:Acrobat 4.05で、PDFフォームにてテキスト型のフィールドA,B,Cを作成しております。やりたいことは、AとBにデータが入力されるとCにA+Bの文字列を代入したいです。
つまり、Aに”012”と入力され、Bに”034”と入力された時、Cには”012034”を入れたいのです。
そのためフィールドcの書式スクリプトに
var a;・・・・・・・・・・・・・・(1)
var b;・・・・・・・・・・・・・・(2)
a = this.getField("A").value...続きを読む

Aベストアンサー

テキストフィールド側で強制的に文字を一文字入れて、
文字列扱いさせるか、
それとも、以下を試してみてください。

a = this.getField("A").value+"";

ダメかもしれないですが、いずれも数値を文字列にしてみようという
試みです。

QPDFファイルにあるプルダウンやラジオボタンの項目を編集したい

よろしくお願い致します。

誰がどのように作ったのか全く不明なのですが、
PDFファイルのフォームの中にプルダウンやラジオボタンで項目を選択したり、「日付」というボタンを押すと自動的に日付が入力されるようになっているものがあります。

これは何か別のソフトで作成されたものをPDFに変換したものなのでしょうか?項目を編集したいのですが、可能ですか?
また、どのようなソフトが必要でしょうか。

ご回答のほど宜しくお願い致します。

Aベストアンサー

正しい名称は
professionalではなく、
pro
でした。

エクセルからフォーム付きPDFにしたか(これはstandardでも可)
pro以上に同梱されるLiveCycle designer ES で一から作れます。
このLiveCycle Designerは
Acrobat pro以上のツールバーにあるフォームをクリック、
ウィザードで云々、既存の電子文書から云々、をクリックで起動します。
それか、プログラムの中にありますので直接起動しても可能と思われます。

LiveCycleの使い方は私もわかりませんが、
「使い方」が書いてありますので、どうにか出来ると思われます。

Qpdfのデータ表 数字の計算表をエクセルに入力したいのですが、pdfの

pdfのデータ表 数字の計算表をエクセルに入力したいのですが、pdfの数値をコピーしてエクセルに貼りつけるソフトありますか?
pdfをまるごと、エクセルコピーできますか?エクセルで、そのデータを使い計算もしたいです。
フリーソフトが必要です。

Aベストアンサー

Adobe Readerで書式設定を維持してコピーして一度ワードパッドに貼りつけてからExcelに持っていくと良いらしいです。
http://pdf-excel.seesaa.net/article/128310894.html
あと、オンラインサービスでPDFをExcelに変換するものもあります。
http://www.pdftoexcelonline.com/


人気Q&Aランキング