Atsortingbuer la valeur du bouton radio en fonction du nombre dynamic de valeurs sélectionnées par l’utilisateur

Une fois qu’un utilisateur a sélectionné les cinq listes déroulantes, je souhaite définir la valeur d’un bouton radio à partir du champ “radio_btn_name” en fonction de 3 sélections maximum . Pensez à chaque object comme une “règle”. Si une combinaison de sélections correspond à cette règle, donnez à “radio_btn_x” la valeur “sortie”.

Dans la partie 1 de ma question, j’ai obtenu le résultat souhaité lorsque le nombre de “selected_option_names_” est égal au nombre de listes déroulantes de sélection. Cependant, je dois pouvoir vérifier le nombre dynamic de listes déroulantes par rapport à trois sélections maximum d’ utilisateurs.

J’imagine que la solution sera radicalement différente de la partie 1; par conséquent, je pense qu’une nouvelle question est justifiée.

JSFiddle

$(document).ready(function() { // A successful solution would render all these rules true, radio_button_4, // radio_button_8 and radio_button_1 would get their respective new values var objs = [{ selected_option_name_1: "select_1", selected_option_name_2: "", selected_option_name_3: "", selected_option_value_1: "1-1", selected_option_value_2: "", selected_option_value_3: "", radio_btn_name: "radio_button_4", output: "5000-R" }, { selected_option_name_1: "select_1", selected_option_name_2: "select_2", selected_option_name_3: "select_5", selected_option_value_1: "1-1", selected_option_value_2: "2-2", selected_option_value_3: "5-2", output: "10000-R", radio_btn_name: "radio_button_8" }, { selected_option_name_1: "select_4", selected_option_name_2: "", selected_option_name_3: "", selected_option_value_1: "4-1", selected_option_value_2: "", selected_option_value_3: "", output: "15000-R", radio_btn_name: "radio_button_1" }]; // Solution for part 1. Will only work if number of dropdowns == "selected_option_name_" $("#submit").on("click", function() { $("#wrapper").find("input[type='radio']").each(function(i, o) { var btn = $(this); var btn_name = $(this).attr("name"); $.each(objs, function(index, rule) { if (btn_name == rule.radio_btn_name) { if(rule.selected_option_value_1 == $('#select_1').val() && rule.selected_option_value_2 == $('#select_2').val() && rule.selected_option_value_3 == $('#select_3').val()) { btn.val(rule.output); console.log(rule.output); } } }); }); }); }); 
  
Dropdown 1-1 Dropdown 1-2 Dropdown 1-3

Dropdown 2-1 Dropdown 2-2 Dropdown 2-3

Dropdown 3-1 Dropdown 3-2 Dropdown 3-3


Dropdown 4-1 Dropdown 4-2 Dropdown 4-3


Dropdown 5-1 Dropdown 5-2 Dropdown 5-3

Il s’avère que la solution n’était pas aussi éloignée que je le pensais. J’avais juste besoin d’append un type d’entrée masqué avec un nom égal à chaîne vide pour prendre en compte les chaînes vides de mes objects.

J’ai également mis à jour mon jQuery pour trouver la valeur des noms vs ids de la première partie de mon post.

Violon mis à jour

  $(document).ready(function() { $("#submit").on("click", function() { $("#wrapper").find("input[type='radio']").each(function(i, o) { var btn = $(this); var btn_name = $(this).attr("name"); $.each(objs, function(index, rule) { if (btn_name == rule.radio_btn_name) { if(rule.selected_option_value_1 == $('[name="'+rule.selected_option_name_1 + '"]').val() && rule.selected_option_value_2 == $('[name="'+rule.selected_option_name_2 + '"]').val() && rule.selected_option_value_3 == $('[name="'+rule.selected_option_name_3 + '"]').val()) { btn.val(rule.output); console.log(rule.output); } } }); }); }); });