2017-01-03 57 views
0

我想要一种简单的y/n单选按钮输入方式,它可以为我提供一个布尔值, 。我有它的工作就是这样,使用可写可观察和检查结合:从单选按钮收集输入,链接到(可观察)布尔值,并且是必填字段(使用ko验证)

JS:

var viewModel = {  
... 
    salary_ind_yn: ko.pureComputed({ 

     read: function() {    
     }, 
     write: function (value) { 
      if (value == "yes") { 
       viewModel.salary_ind(true); 
      } else if (value =="no") { 
       viewModel.salary_ind(false); 
      } 
     } 
    }), 
    salary_ind: ko.observable(), 
... 
} 

HTML:

<div class="form-field"> 
<label>Use salary indicator?</label> 
<span for="salary_ind_yes"><input type="radio" name="salary_ind" value="yes" data-bind="checked:salary_ind_yn" />&nbsp;Yes</span>&nbsp;&nbsp; 
<span for="salary_ind_no"><input type="radio" name="salary_ind" value="no" data-bind="checked:salary_ind_yn">&nbsp;No</span> 
</div> 

但有了这个语法我想不通出了如何得到验证工作...其他领域有它与。扩展有点这样的位:

email_input: ko.observable().extend({ 
     required: true, 
     email:true, 
}), 

所以想如果我将它设置这样的默认状态是“否”按钮被选中,那将意味着我不会需要检查,如果用户点击一个或其他,但无法弄清楚如何要么使用pureComputed/read/write语法。

任何帮助非常感谢!干杯!

+0

为什么使它与计算这么复杂? – Shadowfox

回答

1

您应该能够使用正则观察到与checkedValue数据绑定:

var vm = { 
 
    yn: ko.observable(true) 
 
}; 
 

 
vm.yn.subscribe(console.log.bind(console, "New checked value:")); 
 

 
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<label><input type="radio" name="yn" data-bind="checked: yn, checkedValue: true">yes</label> 
 
<label><input type="radio" name="yn" data-bind="checked: yn, checkedValue: false">no</label>

+0

啊辉煌,没有看到checkedValue标志。将试图让这个更简单的版本与ko验证一起工作。 谢谢! – p44v9n

相关问题