3

我有一个单选按钮列表。我想点击<li>他们的in也检查单选按钮。这一切都有效,直到我name在无线电元素上放置一个属性。然后我的代码停止工作。

这是我的代码的样子:

<ul data-bind="foreach: rows">
    <li data-bind="click: function() { $parent.val($data); }">
        <input type="radio" name="my_radio" data-bind="value: $data, checked: $parent.val" />
        <label data-bind="text: $data"></label>
    </li>
</ul>

这里有两个测试用例。

请务必单击单选按钮和行。

工作:http: //jsfiddle.net/Dihedral/HJGxX/2/

不工作:http: //jsfiddle.net/Dihedral/HJGxX/3/

在第二种情况下,当只单击收音机时,您会看到 val() 可观察对象正在更新,但 UI 没有。任何人都知道这里发生了什么,或者可以看到解决方法?

4

2 回答 2

6

单击未到达单选按钮,因为 knockoutjs 从单击处理程序返回 false,从而阻止发生默认操作(请参阅:注释 3)。只需从点击处理程序(http://jsfiddle.net/HJGxX/4/)返回 true :

<li data-bind="click: function() { $parent.val($data); return true; }">
于 2013-08-29T21:55:01.237 回答
0

将名称属性全部设置为相同的值会使所有这些单选按钮成为同一组的一部分,并且您一次只能选择其中一个。

在www.W3.org上阅读有关单选按钮名称属性的更多信息

于 2013-08-29T21:49:09.080 回答