Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当单选按钮更改为敲除时设置复选框_Javascript_Jquery_Html_Checkbox_Knockout.js - Fatal编程技术网

Javascript 当单选按钮更改为敲除时设置复选框

Javascript 当单选按钮更改为敲除时设置复选框,javascript,jquery,html,checkbox,knockout.js,Javascript,Jquery,Html,Checkbox,Knockout.js,我是个新手,我有一个问题一直困扰着我。我花了一整天的时间在这上面,几乎没有什么进展 我有4个单选按钮,它们绑定到一个名为InvType的可观察对象: <input type="radio" id="rdoAIP" name="rdoAIP" value="AIP" data-bind="checked: InvType" />AIP&nbsp;&nbsp; <input type="radio" id="rdoPSI" name="rdoPSI" value="

我是个新手,我有一个问题一直困扰着我。我花了一整天的时间在这上面,几乎没有什么进展

我有4个单选按钮,它们绑定到一个名为InvType的可观察对象:

<input type="radio" id="rdoAIP" name="rdoAIP" value="AIP" data-bind="checked: InvType" />AIP&nbsp;&nbsp;
<input type="radio" id="rdoPSI" name="rdoPSI" value="PSI" data-bind="checked: InvType" />PSI&nbsp;&nbsp;
<input type="radio" id="rdoPSIAIP" name="rdoPSIAIP" value="PSIAIP" data-bind="checked: InvType" />PSI/AIP&nbsp;&nbsp;
<input type="radio" id="rdoShortForm" name="rdoShortForm" value="PSIShortForm" data-bind="checked: InvType" />PSI Short Form 
AIP
防扩散安全倡议
PSI/AIP
PSI缩写形式
我有几个复选框,只有在选中特定单选按钮时才应选中:

<input data-bind="checked: OptionalValue1" id="chk1" type="checkbox" /> Checkbox 1<br/>
<input data-bind="checked: OptionalValue2" id="chk2" type="checkbox" /> Checkbox 2<br/>
<input data-bind="checked: OptionalValue2" id="chk3" type="checkbox" /> Checkbox 3<br/>
复选框1
复选框2
复选框3
当用户单击不同的单选按钮时,也应选中不同的复选框组合。例如,如果在初始页面加载时选中了“AIP”单选按钮,则还应选中前两个复选框。但是,当用户单击“PSI”单选按钮时,我只希望选中第一个复选框,而其他复选框应被选中

编辑: 对不起,我不清楚这些复选框。因此,条件如下:

  • 在初始页面加载时,单选按钮被设置,这会导致复选框相应地更新。每个不同的单选值都会导致复选框的不同组合变为选中和未选中

  • 页面加载后,用户可以单击单个复选框并更改其值。这不会影响任何其他复选框或单选按钮

  • 到目前为止,我的淘汰码是:

    <script type="text/javascript">
    var psiInvestigationViewModel = @Html.Raw(New JavaScriptSerializer().Serialize(Model));
    
        function PSIInvestigationViewModel(data) 
        {
            var self = this;
            InvestigationType : ko.observable();
    
            ko.mapping.fromJS(data, {}, self);
    
        };
    
    $(function () 
    {
        ko.applyBindings(new PSIInvestigationViewModel(psiInvestigationViewModel), $('#PSIInvestigation@(ViewData("UniqueID"))')[0]);
    
    });
    
    
    var psiInvestigationViewModel=@Html.Raw(新的JavaScriptSerializer().Serialize(Model));
    功能调查视图模型(数据)
    {
    var self=这个;
    调查类型:ko.可观察();
    fromJS(数据,{},self);
    };
    $(函数()
    {
    ko.applyBindings(新的PSIInvestigationViewModel(PSIInvestigationViewModel))$(“#PSIInvestigation@(ViewData(“UniqueID”))”)[0]);
    });
    

    如果有人能告诉我根据单选按钮的更改更新复选框所需的代码,我将不胜感激


    谢谢

    首先,所有单选按钮都应该具有相同的功能,因此如果您选择一个,则另一个将被取消选择

    如果复选框不是只读的,则可以在init函数中对选择逻辑进行编码。 每次单选按钮更改时将调用此初始化函数:

    var VM = function () {
        var self = this;
        self.InvType = ko.observable();
        var initState = function () {
            var t = self.InvType();
            self.OptionalValue1(t == 'AIP' || t == 'PSIAIP');
            self.OptionalValue2(t == 'PSI' || t == 'PSIAIP');
            self.OptionalValue3(t == 'PSIAIP');
        };
    
        self.OptionalValue1 = ko.observable();
        self.OptionalValue2 = ko.observable();
        self.OptionalValue3 = ko.observable();
        self.InvType.subscribe(initState);
    }
    
    ko.applyBindings(new VM());
    


    我希望它能有所帮助。

    另一种方法是使用计算的可观测值:

    self.Optionalvalue1 = ko.computed(function() {
      return self.InvType() == 'AIP' || self.InvType() =='PSIAIP';
    )};
    

    等等。

    复选框是只读的吗?不是。用户也可以“事后”更改这些复选框。很好!因此,在用户选择单选按钮后,程序只应预选复选框?Post将根据您确定的点1进行相应更新!谢谢你,先生。预计这个季节会有一个超大的圣诞篮子。