knockout.js - 如何根据淘汰赛js中的单选按钮选择填充文本框
问题描述
我是淘汰赛js的新手。我有一个带有三个选项和一个文本框的单选按钮组。
如果我在单选按钮中选择选项 1,我需要在文本框中显示“12”。如果我选择选项 2,我需要在文本框中显示“23”并在 UI 中的文本框旁边显示一个新的复选框“使用的选项 2”。如果我选择选项 3,我需要在文本框中显示“34” - (如果选择了选项 2/3,则需要隐藏复选框。
我尝试在文本框值中使用单选按钮的数据绑定。问题是单选按钮的值与我需要在文本框中显示的值不同。
<div class="row">
<div class="col-xs-12">
<div class="form-group"
data-bind="validationElement: CompanyStatement, validationOptions: {insertMessages: false}">
<div>
<label class="control-label">4 - Company Statement</label>
<div class="Company-statement">
<div>
<span class="kp-radiobutton">
<input name="CompanyStatement" type="radio" value="1"
data-bind="checkedValue: CompanyStatement" />
</span>
<span class="radio-message">This is my first option</span>
</div>
<div>
<span class="kp-radiobutton">
<input name="CompanyStatement" type="radio" value="2"
data-bind="checkedValue: CompanyStatement" />
</span>
<span class="radio-message">This is second option</span>
</div>
<div>
<span class="kp-radiobutton">
<input name="CompanyStatement" type="radio" value="3"
data-bind="checkedValue: CompanyStatement" />
</span>
<span class="radio-message">This is my third option.</span>
</div>
</div>
<span class="validationMessage" data-bind="validationMessage: CompanyStatement"></span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 form-group" data-bind="validationElement: MySelectedCode">
<label class="control-label">5 - Selected Code </label>
<input type="text" class="form-control" placeholder="MySelectedCode"
data-bind="value: CompanyStatement" />
</div>
</div>
解决方案
ko.applyBindings(() => {
var self = this;
self.kvp = [12, 23, 34];
self.selected = ko.observable(null);
self.selectedValue = ko.computed(function() {
return self.kvp[self.selected() - 1];
});
});
label {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<!-- ko foreach: { data: kvp, as: 'key' } -->
<label><input type="radio" name="test" data-bind="checkedValue: $index()+1, checked: selected" /> <span data-bind="text: key"></span></label>
<!-- /ko -->
<input type="textbox" data-bind="value: selectedValue, enable: false" />
<input type="checkbox" data-bind="enable: false, visible: selected() == '2', checked: selected() == 2" />
推荐阅读
- javascript - TypeORM 可以 find() 与关系
- tensorflow - 带有遗传算法的 TensorFlow
- concurrency - 您可以为 CUDA 中的内核分配特定数量的内核吗?
- plotly - 标记着色如何在 Plotly.js 中工作?
- ruby-on-rails - 如果rails的子文件夹中的类,为什么我会收到未初始化的常量错误?
- amazon-web-services - 如何停止发送电子邮件 SES
- excel - 如何将两行匹配到 Excel 中的两个不同行?
- .net-core - 由于 Nuget 工件源上的 URL 格式错误,Azure DevOps dotnet 还原任务失败
- wordpress - 如何在 WP rest api 上获取引荐来源网址
- javascript - 使用 javascript 更改包含图像的按钮文本 - 使用转义单引号