0

Adobe LiveCycle で、さまざまなフィールドに数値を追加するフォームを作成しています。最後のフィールド (Eligible Assets) に前のすべてのフィールドを追加する必要がありますが、それらの 3 つの合計と特定の 1 つを除外しますが、それが 60000 を超える場合のみです。最初の部分のスクリプトを次のように記述しました (すべてのフィールドを合計するには) これは、TotalAssets というタイトルのフィールドにあります。

this.rawValue =Cash.rawValue+SavingsAccount.rawValue+ChildrensSavings.rawValue+CheckingAccount.rawValue+ValueHome1.rawValue+ValueHome2.rawValue+ValueVehicle1.rawValue+ValueVehicle2.rawValue+ValueVehicle3.rawValue+BusinessAccount.rawValue+BusinessAssets.rawValue+StocksBonds.rawValue+Retirement.rawValue+CDs.rawValue+OtherInvestments.rawValue+OtherAssets.rawValue;

これは問題なく機能しましたが、60000 を超える場合は、Retirement 値を計算に追加しないでください。これは私が書いたものです(EligibleAssets):

if (Retirement.rawValue > 60000) {
Retirement.rawValue = 0; 
} else {
Retirement.rawValue == Retirement.rawValue ; 
}

this.rawValue = TotalAssets.rawValue - (ValueHome1.rawValue+ValueVehicle1.rawValue +Retirement.rawValue);

フォームを PDF として保存すると、フィールドの最初の合計は正しく計算されますが、2 番目のフィールドは空白になります。

私が見逃していることや間違っていることを見つけることができれば、フィードバックをいただければ幸いです。ありがとうございました!

4

1 に答える 1

0

ここには 2 つの単純な問題があります。

最初の問題は、使用==すべきときに使用していることです=

==- 左辺が右辺と等しいかどうかを確認します。例:if(x == 5) {

=-左辺右辺の値に設定します。例:x = 5

最初の例では x をそのままにしておきますが、2 番目の例ではx を 5に変更します。

したがって、コードは次のようになります。

} else {
    Retirement.rawValue = Retirement.rawValue;
}

しかし、よく考えてみると、このコードは実際には何もしていません。Retirement.rawValue変わりません。

これは、コードの 2 番目の間違いにつながります。少なくとも、私には間違いのように見えます。

if(Retirement.rawValue > 60000) {
    Retirement.rawValue = 0;
}

これは実際に変更され、 フォームの Retirement フィールドの内容Retirement.rawValueが変更される可能性があります。さらに悪いことに、フォームは同じように見えても、他のフィールドが計算されると異なる動作をする可能性があります。これは、キャッチするのが非常に難しいバグです。rawValue

解決策は、新しい変数を作成することです: http://www.w3schools.com/js/js_variables.asp

これで、新しい変数を作成し、その変数に退職金を設定するか、何も設定せず、rawValue最後にその変数を他の s に追加できます。

var retirementOrZero;

if(Retirement.rawValue > 60000) {
    retirementOrZero = 0;
} else {
    retirementOrZero = Retirement.rawValue;
}

this.rawValue = TotalAssets.rawValue - (ValueHome1.rawValue + ValueVehicle1.rawValue + retirementOrZero);

これで、好きなように名前を付けることができる番号ができました。自分自身のコード以外に影響を与えることなく、好きなように変更できます。そのため、退職金が 60000 より大きいかどうかを確認することから始めます。それより大きい場合は、変数を 0 に設定します。そうでない場合は、変数を退職金の値に設定します。次に、作成した変数を家と価値のコストに追加します。

最後の質問として、それはするべきですか

if(Retirement.rawValue > 60000) {
    retirementValueOrZero = 0;
}

またはそれはすることになっていますか

if(Retirement.rawValue > 60000) {
    retirementValueOrZero = 60000;
}

もちろん、ゼロに設定する代わりに 60000 に設定している場合は、おそらく変数cappedRetirementValueなどに名前を付けたいと思うでしょう。

うまくいけば、それは役に立ちます!

編集: 退職金が 60,000 を超える場合にのみ追加すると言ったので、必要なのは次のとおりです。

if(RetirementValue.rawValue > 60000) {
    retirementValueOrZero = RetirementValue.rawValue;
} else {
    retirementValueOrZero = 0;
}
于 2014-07-15T19:23:48.727 に答える