Javascript 当用敲除键选择所有单选按钮时,它无法识别输入
这澄清了问题,并使用纯jquery说明了我的Javascript 当用敲除键选择所有单选按钮时,它无法识别输入,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,这澄清了问题,并使用纯jquery说明了我的selectAll方法 self.selectAll = function( data, event){ $(".dataQueryRadioBtn").each(function() { $( this ).prop('checked', true ); }); } 当您单击其中一个单选按钮,然后单击“我”时,将显示一条消息,显示单击单选按钮的编号。当您现在执行相同操作时,首先单击“全选”,它不会显示每个单选按钮。只有那些你自己点击
selectAll
方法
self.selectAll = function( data, event){
$(".dataQueryRadioBtn").each(function() {
$( this ).prop('checked', true );
});
}
当您单击其中一个单选按钮,然后单击“我”时,将显示一条消息,显示单击单选按钮的编号。当您现在执行相同操作时,首先单击“全选”,它不会显示每个单选按钮。只有那些你自己点击的。为什么会这样 问题在于,Knockout无法知道您的
的checked
属性已更改,因为您只为每个属性注册了click
处理程序
您可以通过单击事件轻松解决此问题:
$(".dataQueryRadioBtn").prop('checked', false).click();
但是一般来说,当您在viewModel
领域时(就像在selectAll
方法中一样),您不应该依赖DOM元素(应该依赖于视图模型的元素,而不是相反)来获取数据,而是显式地更改可观察值
就你而言:
function ViewModel () {
var self = this;
// ...
self.allPossibleTags = []
self.selectAll = function(data, event){
self.selectedTags(self.allPossibleTags);
}
}
// upon document.ready
$(document).ready(function() {
var viewModel = new ViewModel();
viewModel.allPossibleTags = $('.dataQueryRadioBtn').get().map(function(elm) { return elm.value });
ko.applyBindings(viewModel);
});
查看您的self。在视图中选择All
不显示Model
和selectAll function
只需选中复选框,而不是将值推入self。selectedTags
这里是固定的: