如何正确重置对象项

时间:2015-08-19 13:29:27

标签: javascript jquery object

我目前正在开展一些工作,要求我将输入字段的值作为对象项。

var test = {
    item1:{
        subitem1: "", <------- This is the one I'm trying to fill
        subitem2: "",
        subitem3: "",
        subitem4: ""
    }
};

当输入字段#thecontent更改

时,此值将被填充
$('.wrapper').on('change', '#thecontent', function(){
    var theContent = $(this).val();
    test.item1.subitem1 = theContent;
});

现在,输入文本字段仅在我检查输入复选框#checkit

后才可见
if(this.checked) {
    $('#thecontent').show();
}

如果取消选中该复选框,则不仅输入字段消失,而且还需要重置对象项。 目前我这样做如下:

else{
    $('#thecontent').hide();        
    //This part probably needs to be reset in a different way
    test.item1.subitem1 = "";
}

但是,如果我在重置一次后尝试再次填充对象项目,它就不再用新值填充它了。

如何重置对象内的值以便稍后再次填充?

总结:

  • 复选框 - &gt;
  • 输入&#34;这是一个值&#34;在输入框中 - &gt;
  • 点击&#34;测试它&#34; - &GT;
  • subitem1填充&#34;这是一个值&#34;在控制台 - &gt;
  • 取消选中此框以重置对象 - &gt;
  • 再次选中此框 - &gt;
  • 输入&#34;这是一个不同的值&#34; - &GT;
  • 点击&#34;测试它&#34; - &GT;
  • 在我预期的时候看到空的subitem1&#34;这是一个不同的值&#34;在控制台中。

我错过了什么?

Fiddle

1 个答案:

答案 0 :(得分:0)

如果您在隐藏文本时没有打算从输入中删除文本,那么一种解决方案就是简单地触发&#34;更改&#34;编程:

if(this.checked) {
    $('#thecontent').show().trigger("change");
}

请参阅更新的小提琴:http://jsfiddle.net/2dqmkvrr/4/