使用Prototype获取/设置复选框和单选按钮值

时间:2009-09-05 00:31:46

标签: forms checkbox radio-button prototypejs

原型很棒,但是在1.6.1版本中,库仍然不允许获取/设置分组输入(复选框和单选按钮。)我想​​要一种方法来获取{{ {1}}。我希望能够将这些复选框设置为值数组,而另一方面。

想法?

5 个答案:

答案 0 :(得分:10)

您可以随时执行以下操作:(假设您的复选框的类别为checkboxes)。

var checkedList = [];
$$('.checkboxes').each(function(ele){
   if( $(ele).checked )
   {
       checkedList.push($(ele).name);
   }
});

答案 1 :(得分:6)

编辑 - 刚刚意识到我误解了这个问题,下面的代码只对设置值有好处:

var form = $('options');
checkboxes = form.getInputs('checkbox');
checkboxes.each(function(e){ e.checked = 0 });
// or even checkboxes.invoke('checked',0);

可能会使用这样的东西:

var cels = new Array();
$$('checkbox[checked="checked"]').each(el){
  cels.push(el.value);
}

答案 2 :(得分:4)

这仅适用于单选按钮,但仍然有用。

获取

$$('input:checked[name="radio_name"]')[0].value

设置

$$('input[name="radio_name"][value="to_select"]')[0].checked = true

“radio_name”是您的广播组的名称。 “to_select”是您要选择的任何值。 “[0]”有效,因为一次只能检查1个单选按钮。

另一方面,我有点不喜欢原型。在jQuery中更容易,但你必须使用你必须使用的东西。

答案 3 :(得分:1)

我最终编写了自己的Prototype扩展来执行此操作。你可以看到他们on Github。这是项目的一个注释:

“这些扩展允许您使用Prototype的方便的$ F()语法来获取和设置这些分组输入元素的值。它们已经使用Prototype 1.6.0.3和1.6.1进行了测试。这些中还有其他位扩展名。请参阅README.html file了解详情。“

来自sawgee和Los的答案非常受欢迎,但我想要一个更加集成的解决方案,这将允许我使用复选框和单选按钮与我已经与其他表单元素一起使用的自然$ F()语法。

答案 4 :(得分:0)

给定HTML:

<label><input type="radio" id="choiceA" name="choices" value="A" checked="checked" /> A</label>
<label><input type="radio" id="choiceB" name="choices" value="B" /> B</label>

这会执行CSS样式查询并返回所有元素的值。

$$('input:checked[type="radio"][name="group-name"]').pluck("value");