Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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 根据另一个下拉字段重置knockout.js值_Javascript_Knockout.js - Fatal编程技术网

Javascript 根据另一个下拉字段重置knockout.js值

Javascript 根据另一个下拉字段重置knockout.js值,javascript,knockout.js,Javascript,Knockout.js,我有一组下拉字段(使用knockout.js),用于“动态”构建两个javascript函数,我在网站上使用它们,并通过链接触发它们 第一个功能是完美构建 第二个函数使用下拉列表“Duration”使“VIP加1年”或“VIP加2年”选项出现/消失,并构建第二个函数 问题是,当我在“期限”中选择“1年”,然后选择“Vip加1”选项时,正确的sku将添加到我的第二个功能中,但如果我改变主意并在期限中选择“2年”,该值将保留在第二个功能中,并添加到我输出中的新“Vip加2年”sku中 理想情况下,如

我有一组下拉字段(使用knockout.js),用于“动态”构建两个javascript函数,我在网站上使用它们,并通过链接触发它们

第一个功能是完美构建

第二个函数使用下拉列表“Duration”使“VIP加1年”或“VIP加2年”选项出现/消失,并构建第二个函数

问题是,当我在“期限”中选择“1年”,然后选择“Vip加1”选项时,正确的sku将添加到我的第二个功能中,但如果我改变主意并在期限中选择“2年”,该值将保留在第二个功能中,并添加到我输出中的新“Vip加2年”sku中

理想情况下,如果在“VIP加1年”或“VIP加2年”下拉列表中未选择任何内容,则第二个功能将根本不会出现

这可能很容易解决,但因为我是js的初学者,所以我在那里被绊住了

请访问查看我的预览

成员资格:
新成员
续会
礼品会员

类别: 贵宾个人 贵宾家庭 贵宾 贵宾生

持续时间: 1安 2安

VIP加1年: 不,谢谢 贵宾加1 贵宾加2 贵宾加3 VIP加2年: 不,谢谢 贵宾加1 贵宾加2 贵宾加3



var ViewModel=函数(成员资格、类别、持续时间、vipplus1、vipplus2){ this.membership=ko.可观察(成员资格); this.category=ko.可观察(category); this.duration=ko.可观察(duration); this.vipplus1=ko.可观察(vipplus1); this.vipplus2=ko.可观察(vipplus2); this.mvipsku=ko.computed(函数(){ 返回“addMembershipToCart”(“+”MVIP-“+this.membership()+”-“+this.duration()+”-“+this.category()+”);“+”
“+”addProductToCart(“+”this.vipplus1()+this.vipplus2()+”);“; },这个); }; ko.applyBindings(新的ViewModel());//这使得击倒开始工作 函数showForm(){ var selopt=document.getElementById(“opts”).value; 如果(selopt==1){ document.getElementById(“f1”).style.display=“block”; document.getElementById(“f2”).style.display=“无”; } 如果(selopt==2){ document.getElementById(“f2”).style.display=“block”; document.getElementById(“f1”).style.display=“无”; } }
您应该订阅
持续时间的更改
并清除相应的VIP Plus设置:

self.duration.subscribe(function(newValue) {
    if(newValue == '1') {
        self.vipplus2(null);
    } else if(newValue == '2') {
        self.vipplus1(null);
    }
});

非常感谢您的帮助xdumaine!
self.duration.subscribe(function(newValue) {
    if(newValue == '1') {
        self.vipplus2(null);
    } else if(newValue == '2') {
        self.vipplus1(null);
    }
});