javascript - 如何在 jquery 中使用 name 和 attr 设置选中的单选按钮?

标签 javascript jquery html ajax radio-button

我正在使用一些 radio 输入,并希望在编辑功能时将它们设置为选中状态。我使用了ajax响应。我必须检查它们。

示例代码如下:

    <form>
Group 1:
    <input type="radio" name="ans1" str="ans_a" value="1" />
    <input type="radio" name="ans1" str="ans_b" value="2" />
    <input type="radio" name="ans1" str="ans_c" value="3" />
    <input type="radio" name="ans1" str="ans_d" value="4" />

Group 2:
    <input type="radio" name="ans2" str="ans_a" value="1" />
    <input type="radio" name="ans2" str="ans_b" value="2" />
    <input type="radio" name="ans2" str="ans_c" value="3" />
    <input type="radio" name="ans2" str="ans_d" value="4" />

Group 3:
    <input type="radio" name="ans3" str="ans_a" value="1" />
    <input type="radio" name="ans3" str="ans_b" value="2" />
    <input type="radio" name="ans3" str="ans_c" value="3" />
    <input type="radio" name="ans3" str="ans_d" value="4" />


</form>

我从 ajax 响应中得到以下内容:

var ans_name = ans1,ans2,ans3;
var str = ans_c,ans_a,ans_d;

这意味着我必须设置检查第 1 组的第 3 个 radio 输入,依此类推。

jquery如何设置勾选对应的单选按钮?

最佳答案

选择基于attribute equals selector并更新 checked 属性。

var ans_name = 'ans1,ans2,ans3';
var str = 'ans_c,ans_a,ans_d';

// split the string into array by ,
var names = ans_name.split(','),
  val = str.split(',');

// iterate over names array
names.forEach(function(v, i) {
  // generate the selector and get jQuery object using that
  $('[name="' + v + '"][str="' + val[i] + '"]')
    // update the property
    .prop('checked', true);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  Group 1:
  <input type="radio" name="ans1" str="ans_a" value="1" />
  <input type="radio" name="ans1" str="ans_b" value="2" />
  <input type="radio" name="ans1" str="ans_c" value="3" />
  <input type="radio" name="ans1" str="ans_d" value="4" /> Group 2:
  <input type="radio" name="ans2" str="ans_a" value="1" />
  <input type="radio" name="ans2" str="ans_b" value="2" />
  <input type="radio" name="ans2" str="ans_c" value="3" />
  <input type="radio" name="ans2" str="ans_d" value="4" /> Group 3:
  <input type="radio" name="ans3" str="ans_a" value="1" />
  <input type="radio" name="ans3" str="ans_b" value="2" />
  <input type="radio" name="ans3" str="ans_c" value="3" />
  <input type="radio" name="ans3" str="ans_d" value="4" />


</form>


或者使用 Array#map 生成单个选择器和 Array#join方法。

var ans_name = 'ans1,ans2,ans3';
var str = 'ans_c,ans_a,ans_d';

var names = ans_name.split(','),
  val = str.split(',');


$(names.map(function(v, i) {
      // geneate the selector
      return '[name="' + v + '"][str="' + val[i] + '"]';
    })
    // join the selectors
    .join(','))
  // update the property
  .prop('checked', true)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  Group 1:
  <input type="radio" name="ans1" str="ans_a" value="1" />
  <input type="radio" name="ans1" str="ans_b" value="2" />
  <input type="radio" name="ans1" str="ans_c" value="3" />
  <input type="radio" name="ans1" str="ans_d" value="4" /> Group 2:
  <input type="radio" name="ans2" str="ans_a" value="1" />
  <input type="radio" name="ans2" str="ans_b" value="2" />
  <input type="radio" name="ans2" str="ans_c" value="3" />
  <input type="radio" name="ans2" str="ans_d" value="4" /> Group 3:
  <input type="radio" name="ans3" str="ans_a" value="1" />
  <input type="radio" name="ans3" str="ans_b" value="2" />
  <input type="radio" name="ans3" str="ans_c" value="3" />
  <input type="radio" name="ans3" str="ans_d" value="4" />


</form>

关于javascript - 如何在 jquery 中使用 name 和 attr 设置选中的单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44535725/

相关文章:

html - 如何在html中的图像上添加 Logo 和菜单

javascript - 从 Web 应用程序中删除 firebase 数据

javascript - 为表单字段添加后缀

javascript - css transform translate3d 后元素 scrollWidth 错误

javascript - 使用特殊字符进行 Optgroup 过滤

javascript - jQuery,通过单击 <li> 项目平滑滚动到 Div

html - 字符集 UTF-8 不起作用(卡在这些 ? 标记上)

javascript - 除 trim 外还可以使用其他功能

javascript - Jquery Animate 不适合我

javascript - 基于坐标在图像上显示图像