2017-08-29 4 views
0

の選択に基づいて選択し、ドロップダウンを移入することは、私のバイオリンです演算子、属性、演算子&しきい値。別の選択フォームフィールドここ

コントラクトとしきい値変数の間の関係を使用して作成されたjson(expressionDetails)を使用して、属性ドロップダウンが設定されます。

属性の選択に基づいて、しきい値フィールドが設定されます。

クローン化されていない属性としきい値に対してこれを達成できました。しかし、クラス/ IDの重複のため、すべてのクローン属性が同じクラスを保持し、それらの値が(var z1内で)連結されているため、クローン属性の値を取得できません。

//Appending option to "cloned" thresold field based on choice of attribute 
$('.attributeExpr').on('change', function(e) { 
    $('.thresholdExpr').empty(); 
    var z1 = $(".attributeExpr option:selected").text();      
    console.log(z1); 
    var a1 = expressionDetails[z1]; 
    console.log(a1); 
    for (var i1 = 0; i1 < a1.length; i1++) { 
     var b1 = a1[i1].name; 
     // alert(b1); 
     var opt1 = $("<option>").text(b1); 
     // console.log(opt1); 
     $('.thresholdExpr').append(opt1); 
    } 
}); 

別の方法がありますか?その後、これらの値をすべて使用して「式」フィールドを作成するため、クローングループごとに機能するはずです。

ご協力いただければ幸いです。ありがとうございました。

答えて

0

上記のコードの3行目をこれに置き換えます。選択した値のみを返します。

var z1 = $("option:selected",$(this)).text(); 
+0

これは、属性オプションの選択としきい値の設定に役立ちます。しかし、複数のクローングループがある場合、1つの属性ドロップダウンオプションを変更すると、選択したすべてのしきい値も変更されます。私の言葉が理解されたと思っています。 –

0

はあなたのような何かを試してみました:代わりに

var z1 = $(".attributeExpr option:selected").text(); 

var z1 = $(this).find('option:selected').text(); 

を私はあなたのフィドルのDEMOでそれをテストしてきたし、それが働いている、これを試してみてください。

$('.attributeExpr').on('change', function(e) { 
    var index = $(this).index('.attributeExpr'); 
    $('.thresholdExpr:eq('+index+')').empty(); 
    var z1 = $(this).find("option:selected").text();     
    console.log(z1); 
    var a1 = expressionDetails[z1]; 
    console.log(a1); 
    for (var i1 = 0; i1 < a1.length; i1++) { 
    var b1 = a1[i1].name; 
    // alert(b1); 
    var opt1 = $("<option>").text(b1); 
    // console.log(opt1); 
    $('.thresholdExpr:eq('+index+')').append(opt1); 
    } 
}); 

インデックスを追加して、現在の要素をターゲットにできるようにしました。

+0

これは、属性オプションの選択としきい値の設定に役立ちます。ただし、複数のクローングループがある場合、1つの属性ドロップダウンオプションを変更すると、すべてのしきい値ドロップダウン値も変更されます。私の言葉が理解されることを願って –

+0

はい、それは素晴らしい作品です!本当にありがとう。また、非クローン・フォーム・フィールドとクローン・フォーム・フィールドの両方の選択値に基づいて式を作成するのを少し助けてください。 [例えば、温度> TEMP-TH-25 &&湿度!= HUM-TH-25 ||湿度> = .....] –

+0

喜んで私は助けることができます、あなたが何をする必要があるかを私に教えてください。もし可能なら私はあなたを助けます。 – adda82

0

expressionsBuilder formgroup option fieldsをダイナミックにすることは、特別にそのような複雑な実装を適切に行うためにまず行うべきことです。つまり、JavaScriptで作成され、HTMLでハードコードされていないことを意味します。

次に、作成した個々のフィールドごとにchangeイベントリスナーを割り当てます。この方法で、すべてのフォームグループの動作を制御できます。プログラム的にそれを移入することにより

example click here

あなたはフィールドの挙動を完全にコントロールを持っています。あなたは、このようなexpressions変数反復することによって、各フィールドとすべての値を取得できます。

for (var i = 0; i < expressions.length; i++) 
{ 
    var id = expressions[i]; 
    var theAttribute = $("#" + id).find("[name='attribute']").val(); 
    var theOperator = $("#" + id).find("[name='operator']").val(); 
    var theThreshold = $("#" + id).find("[name='threshold']").val(); 
} 

希望もアップ

===
頭を助け、あなたがそのような複合体を作成している表示されます応用。 JavaScriptフレームワークを使用してコードのメンテナンス性を向上させることをお勧めします。このアプローチは、長期的には維持するのが非常に難しくなるでしょう。

+0

あなたの努力に感謝します。オプションを選択して「追加」または「削除」をクリックしても、以前に選択したドロップダウンもリセットされましたか? –

+0

https://jsfiddle.net/4k8d2ez8/4/男私は間違ったupated URLをここに貼り付けました。 – masterpreenz

+0

@ masterpreez:こんにちは、アプリケーションのデータ構造を変更しないことをお勧めします。私は、実際のシナリオではAPIへのajax呼び出しから来ていますが、フィドルでJSONの変数を使用しています。データ変数である「契約」や「閾値」に変更を加えずに、私のフィドルを使ってください。 –

関連する問題