更多关于绑定选中的单选按钮(尚未讨论的内容)

时间:2013-10-21 09:07:54

标签: javascript html5 knockout.js durandal

两天前,我问了问题"radio button checked binding html5, durandal"。我接受了一个看起来很好的答案,但它不起作用。

我只想添加评论并告诉它不起作用;但是为了添加评论,我需要50个代表...

如果你真的想帮助我,你不想回答我在你的项目中工作的东西,而不是在我的项目中,你必须先阅读我之前的问题,这样你就会知道所有的我已经尝试过的选项不起作用。

所以我没有别的选择,但写了新的问题......请不要生气。

我会详细介绍我的项目,可能会帮助你帮助我...... 我在DURANDAL项目工作。 我有两个无线电按钮,称为“searchBy”。第一个按钮ID是:“byId”。第二个按钮id是:“byName”。用户必须选择其中一个,我必须知道他选择了什么。

我尝试了在评论中附加的文档中编写的代码,但它不起作用。

以下代码:

html代码:

                        <tr>
                            <td>
                                <label for="byId" innerHTML:"search by id" />
                                <input type="radio"
                                    name="radSearchBy"
                                    id="byId"
                                    value="RadioById"
                                    data-bind="checked:computedIsId" />
                            </td>

                        </tr>
                        <tr>
                            <td>
                                <label for="byName" innerHTML:"search by name" />
                                <input type="radio"
                                    name="radSearchBy"
                                    value="RadioByName"
                                    id="byName"
                                   data-bind="checked:computedIsId"
                                   />
                        </td>

                        </tr>

javascript背后:

                 computedIsId:ko.observable("searchById"),

它不起作用!!!


我尝试了第一个答案中编写的代码,它没有......

javascript背后:

                radSearchBy = ko.observable(true);
             value = ko.computed({
               read: function() { return radSearchBy.toString(); },
                    write: function(val) { radSearchBy(val === 'true'); }
                });

html代码:

                        <tr>
                            <td>
                                <label for="byId" innerHTML:"search by id" />
                                <input type="radio"
                                    name="radSearchBy"
                                    id="byId"                                        
                                    data-bind="value" />
                            </td>

                        </tr>
                        <tr>
                            <td>
                                <label for="byName" innerHTML:"search by name" />
                                <input type="radio"
                                    name="radSearchBy"
                                    data-bind="value" 
                                    id="byName"

                                   />
                        </td>

                        </tr>

我还试着写第二个按钮“databind =”checked:!value()“”,或者在第一个按钮“()”中写下“值”之后的其他内容......没什么帮助。

你可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我的朋友帮助了我,如果你想学习答案 - 这里是:

您必须添加名为“value”的单选按钮属性。 现在,您已将“已检查”属性绑定到后面的e属性。 后面的属性将是可观察的。将其初始化为你在无线电广告的有利“价值”中所汲取的一个字符串。 这是特别的淘汰赛功能。 当您更改检查时,后面的属性将接受当前检查的readio的“value”属性的字符串。

这是一个简单的例子:

         <                    input type="radio"
                                    name="radSearchBy"                                      
                                    value="byNo"
                                    data-bind="checked: searchBy" />
                                <label for="byNo" data-bind="text: global.dict()[376]" />

                                <input type="radio"
                                    name="radSearchBy"                                       
                                    value="byName"
                                    data-bind="checked: searchBy" />

背后的javascript:                                 var vm = {

                                  searchBy: ko.observable("byno"),
                            }
                            return vm;

它比你想象的更简单......

当你想知道是否检查了无线电时,你已经写了“

                       function isByNo(){

                                     return vm.searchBy() == "byNo" ? true : false;
                        }

当您想要检查您必须编写的代码中的任何按钮时:

                       vm.searchBy("byNo");