Javascript 当用敲除键选择所有单选按钮时,它无法识别输入

Javascript 当用敲除键选择所有单选按钮时,它无法识别输入,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,这澄清了问题,并使用纯jquery说明了我的selectAll方法 self.selectAll = function( data, event){ $(".dataQueryRadioBtn").each(function() { $( this ).prop('checked', true ); }); } 当您单击其中一个单选按钮,然后单击“我”时,将显示一条消息,显示单击单选按钮的编号。当您现在执行相同操作时,首先单击“全选”,它不会显示每个单选按钮。只有那些你自己点击

这澄清了问题,并使用纯jquery说明了我的
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
这里是固定的: