根据用户选择的值的动态数量分配单选按钮的值

在用户选择五个选择下拉列表后,我想根据最多3个用户选择从字段“radio_btn_name”设置单选按钮的值。 将每个对象视为“规则”。 如果选择组合与该规则匹配,请将“radio_btn_x”赋予“output”值。

在我的问题的第1部分中 ,当“selected_option_names_”的数量等于选择下拉数量时,我实现了我想要的结果。 但是,我需要能够检查动态的下拉数,而不是最多3个用户选择。

我想解决方案将与第1部分完全不同,因此我觉得有必要提出一个新问题。

的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

事实certificate,解决方案并不像我想象的那么遥远。 我只需要添加一个隐藏名称等于空字符串的输入类型来解释我的对象中的任何空字符串。

我还更新了我的jQuery,以便从我的post的第一部分中找到名称与id的值。

更新小提琴

  $(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); } } }); }); }); });