jQuery 获取动态创建的多个(>300)单选按钮的值

标签 jquery html

我正在从事一项科学项目。基本上它有一个 HTML 表格,如所附屏幕截图所示 - enter image description here

示例 jsFiddle 已上传 here .

示例 HTML 代码段如下 -

<table>
<thead>
  <tr class="myHead">
   <th>Markers</th>
   <th>-</th>
    <th>1+</th>
    <th>2+</th>
    <th>3+</th>
    <th>+/-</th>
  </tr>
</thead>
<tr><td>CD1a</td><td><input type="radio" name="CD1a" value="0"></td><td><input type="radio" name="CD1a" value="2"></td><td><input type="radio" name="CD1a" value="3"></td><td><input type="radio" name="CD1a" value="4"></td><td><input type="radio" name="CD1a" value="1"></td></tr>
<tr><td>CD1b</td><td><input type="radio" name="CD1b" value="0"></td><td><input type="radio" name="CD1b" value="2"></td><td><input type="radio" name="CD1b" value="3"></td><td><input type="radio" name="CD1b" value="4"></td><td><input type="radio" name="CD1b" value="1"></td></tr>
<tr><td>CD1c</td><td><input type="radio" name="CD1c" value="0"></td><td><input type="radio" name="CD1c" value="2"></td><td><input type="radio" name="CD1c" value="3"></td><td><input type="radio" name="CD1c" value="4"></td><td><input type="radio" name="CD1c" value="1"></td></tr>
<tr><td>CD1d</td><td><input type="radio" name="CD1d" value="0"></td><td><input type="radio" name="CD1d" value="2"></td><td><input type="radio" name="CD1d" value="3"></td><td><input type="radio" name="CD1d" value="4"></td><td><input type="radio" name="CD1d" value="1"></td></tr>
<tr><td>CD1e</td><td><input type="radio" name="CD1e" value="0"></td><td><input type="radio" name="CD1e" value="2"></td><td><input type="radio" name="CD1e" value="3"></td><td><input type="radio" name="CD1e" value="4"></td><td><input type="radio" name="CD1e" value="1"></td></tr>
<tr><td>CD2</td><td><input type="radio" name="CD2" value="0"></td><td><input type="radio" name="CD2" value="2"></td><td><input type="radio" name="CD2" value="3"></td><td><input type="radio" name="CD2" value="4"></td><td><input type="radio" name="CD2" value="1"></td></tr>
<tr><td>CD3</td><td><input type="radio" name="CD3" value="0"></td><td><input type="radio" name="CD3" value="2"></td><td><input type="radio" name="CD3" value="3"></td><td><input type="radio" name="CD3" value="4"></td><td><input type="radio" name="CD3" value="1"></td></tr>
<tr><td>CD3d</td><td><input type="radio" name="CD3d" value="0"></td><td><input type="radio" name="CD3d" value="2"></td><td><input type="radio" name="CD3d" value="3"></td><td><input type="radio" name="CD3d" value="4"></td><td><input type="radio" name="CD3d" value="1"></td></tr>
<tr><td>CD3e</td><td><input type="radio" name="CD3e" value="0"></td><td><input type="radio" name="CD3e" value="2"></td><td><input type="radio" name="CD3e" value="3"></td><td><input type="radio" name="CD3e" value="4"></td><td><input type="radio" name="CD3e" value="1"></td></tr>
<tr><td>CD3g</td><td><input type="radio" name="CD3g" value="0"></td><td><input type="radio" name="CD3g" value="2"></td><td><input type="radio" name="CD3g" value="3"></td><td><input type="radio" name="CD3g" value="4"></td><td><input type="radio" name="CD3g" value="1"></td></tr>
<tr><td>CD4</td><td><input type="radio" name="CD4" value="0"></td><td><input type="radio" name="CD4" value="2"></td><td><input type="radio" name="CD4" value="3"></td><td><input type="radio" name="CD4" value="4"></td><td><input type="radio" name="CD4" value="1"></td></tr>
</table>

实际上,这些标记的列表是使用 Select Query 从 SQL 数据库生成的(数量超过 300 个)。单选按钮的名称与数据库表中标记的列名称及其各自的值保持一致。

现在,我想要实现(但未能实现)的是,每当单击单选按钮时,它应该创建一个列表/数组,其中包含所有选定的单选按钮及其各自的值这样,它可以用于创建另一个 Select 查询。 例如如果选中的单选按钮类似于(选中的单选按钮的值在括号中)- CD1b(2)、CD2(4)、CD4(1);所以最后的查询就像 - 从 my_table 中选择 *,其中 CD1b=2 and CD2=4 and CD4=1;

示例 jQuery

$(document).ready(function() {

  $("input:radio").click(function() {
   //Logic to find out all the selected radio buttons in way that can be used to create an SELECT MySQLi Query
  })

})

我知道如何找出选中的单选按钮,但我不知道如何在动态创建的多个单选按钮组中执行同样的操作。

最佳答案

您可以使用 .serializeArray(),像这样(参见 forked JSfiddle here ):

$(document).ready(function() {
  var $inputs = $("input:radio");
  $inputs.change(function() {
    var state = $inputs.serializeArray().reduce((acc, datum) => {
      acc[datum.name] = datum.value;
      return acc;
    }, {});
    console.log(state);
  });
});

state 看起来像

{"CD1c":"2","CD1e":"3","CD3e":"4"}

你可以 POST 到你的后端或者做任何事情。

关于jQuery 获取动态创建的多个(>300)单选按钮的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50898415/

相关文章:

javascript - Rails 5.1.2 Ajax 远程 : true not working

html - svg 图像元素回退

javascript - 每次单击特定按钮时都关注 iframe

javascript - 随着内部 div 变大动态改变外部 div

javascript - 响应显示/隐藏菜单故障

php - 提交 html 表单,无需刷新或 jquery

php - 使用 fpdf 的 pdf 分页符过多

html - margin-top 与#section div 一起移动?

jquery - 将模态图像居中 : which <div> to style?

javascript - 基于 scrollTop 和 scrollUp 的站点标题是否可见?