問題を解決する方法は2つあります。
注:以下では、値をテキストフィールドに表示するものとします。表示されるコードスニペットは、特定のフィールドのCalculateイベントスクリプトの一部です。値を別の計算で使用する場合は、変数を定義してから、「event.value」の代わりにその名前を使用します。
a)値がオプションから計算できる場合(「部品タイプと欠陥タイプ」の意味で)、コンポーネントをラジオボタン選択の戻り値として設定できます。この場合、値はすぐに計算されます:
event.value = this.getField("PartType").value*1 + this.getField("DefectType").value*1) ;
さらに複雑なアルゴリズム/式がある場合は、その値を代わりに使用します。
b)値を計算する式/アルゴリズムがない場合は、ルックアップテーブルが必要です。ここでは、2次元配列を定義します。ここで要素はPartTypeを表し、それに対応するDefectTypesの配列です。
ラジオボタンフィールドの戻り値は、そのルックアップテーブルのインデックス番号に対応します。
私たちは、第1のルックアップテーブルのセットアップを開始します:
などAA、BBは、accoridingコンポーネントの値を表す
var myLUT = new Array() ;
myLUT[0] = [10, 70, aa] ; // values for Gear and Burn, Stress, Depth
myLUT[1] = [bb, cc, dd] ; // values for Camshaft and Burn, Stress, Depth
myLUT[2] = [35, ee, ff] ; // values for Bearing and Burn, Stress, Depth
。
Calculationスクリプトでこのルックアップテーブルを定義できますが、この定義を含むドキュメントレベルのスクリプトを作成する方が効率的です。
計算スクリプトは次のようになります。
var pt = this.getField("PartType").value ;
var dt = this.getField("DefectType").value ;
event.value = myLUT[pt][dt] ;
、それはそれを行うだろう。
ラジオボタンのフィールドを扱うときにもう1つのことがあります。オプションが選択されていなければならない場合でも、デフォルトとして選択を行うことはできません。ただし、どちらのオプションもオプションが選択されていることを前提としています。我々はまた、ラジオボタングループの一方または両方が(まだ)ありませんチェックすると何が起こるかを指定する必要があり
if (this.getField("PartType").value != "Off" && this.getField("DefectType").value != "Off") {
// now run our code
}
:したがって、我々は両方のグループがチェックのオプションを持っていることを要求することにより、コードを保護する必要があります。
あなたのコードはこれですか? – user7417866
Refere this http://www.javascript-coder.com/javascript-form/javascript-calculator-script.phtml –