2017-01-03 27 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

相關問題