有关单选按钮选中的绑定的更多信息(尚未讨论)

more about binding for radio-button checked (somthing that is not disscussed yet)

本文关键字:信息 单选按钮 绑定      更新时间:2023-09-26

两天前我问了问题"单选按钮检查绑定html5,durandal"。我接受了一个看起来不错的答案,但它不起作用。

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

如果你想真正帮助我,并且你不想回答我在你的项目中有效但不适用于我的项目的事情,你必须首先阅读我之前的问题,这样你就会知道我已经尝试过的所有选项都不起作用。

所以我别无选择,只能写新问题......请不要生气。

我会更多地讲述我的项目,也许它会帮助你帮助我......我在杜兰达尔项目工作。我有两个单选按钮,称为"searchBy"。第一个按钮 ID 是:"byId"。第二个按钮 ID 是:"byName"。用户必须选择其中之一,我必须知道他选择了什么。

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

下面的代码:

网页代码:

                        <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'); }
                });

网页代码:

                        <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()",或者在第一个按钮"()"在单词"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");