首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >checkbox change事件上的KnockoutJS更改值和输入文本

checkbox change事件上的KnockoutJS更改值和输入文本
EN

Stack Overflow用户
提问于 2013-05-25 00:04:55
回答 1查看 1.3K关注 0票数 1

我有一个技能列表,当用户检查技能时,如果选中,将显示多年的输入。我的问题是,如果用户输入年份,然后取消选中技能,则年份的值仍然与输入上的文本一起保存在可观察值中。我不确定是否需要使用事件处理程序、订阅函数或仅使用ko计算函数来清除该值。

http://jsfiddle.net/bjk964/CQ2CG/2/

代码语言:javascript
复制
<div data-bind="foreach: ApplicationSkills">                
    <p>
        <span data-bind="text: Skill_SkillTypeName"></span>
        <input type="checkbox" data-bind="checked: Skill_Checked" />
        <span data-bind="visible: Skill_Checked" class="years">Years:</span>
        <input type="text" data-bind="value: Skill_Years, visible: Skill_Checked" />
    </p>                
</div>

var Application = function () {
    this.ApplicationSkills = ko.observableArray();
};

var ApplicationSkill = function () {
    var self = this;
    this.Skill_SkillTypeID = ko.observable(0);
    this.Skill_Years = ko.observable().extend({ maxLength:2, number:true });
    this.Skill_Checked = ko.observable(false);
    this.Skill_SkillTypeName = ko.observable();
};

var vm = new Application();
ko.applyBindings(vm);

var skill = new ApplicationSkill()
skill.Skill_SkillTypeID(1);
skill.Skill_SkillTypeName('Data Entry');

vm.ApplicationSkills.push(skill); 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-25 00:21:59

我会把它当做一个计算机来做:

代码语言:javascript
复制
var skillYears = ko.observable();
this.Skill_Years = ko.computed({
    read: function () { return this.Skill_Checked() ? skillYears() : undefined; },
    write: skillYears
}, this);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16739196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档