这是一个更多关于逻辑的问题,而不是技术细节。
我正在使用对象保存JavaScript创建的表单的内容,我已成功保存主表单内容,但我无法保存子表单的内容。
这是一个更好地展示问题的JSFiddle:https://jsfiddle.net/96wstepj/
1。)转到“每晚定价”> “季节性定价”并点击“添加季节性价格过滤器”,填写字段
2.)然后点击“添加价格规则”并填写字段
3。)点击“全部保存”,您将看到所有内容都以JSON格式在警报中正确显示
4.。)现在再次单击“添加季节性价格过滤器”,填写字段,然后单击“添加价格规则”并填写字段(现在您有2个季节性价格过滤器,每个都有一个定价规则)
5.单击“全部保存”,您将看到每个季节性过滤器中重复的价格规则内容(请参阅“价格”对象键)
这是在对象中添加表单内容的功能:
function get_seasonal_price_rules() {
var obj1 = {};
var obj2 = {};
$("#price-per-night .seasonal-filter-wrapper-outer .price-rule-wrapper-outer").each(function() {
$(this).children('div').each(function(index2) {
obj2[(index2 + 1)] = {
standard_adult_weekday: $('#price-per-night input[name=standard-adult-weekday-' + (index2 + 1) + ']').val(),
standard_adult_weekend: $('#price-per-night input[name=standard-adult-weekend-' + (index2 + 1) + ']').val(),
standard_child_weekday: $('#price-per-night input[name=standard-child-weekday-' + (index2 + 1) + ']').val(),
standard_child_weekend: $('#price-per-night input[name=standard-child-weekend-' + (index2 + 1) + ']').val()
};
});
})
$(".seasonal-filter-wrapper-outer").each(function() {
$(this).children('.seasonal-filter-wrapper-inner').each(function(index) {
obj1[(index + 1)] = {
seasonal_date_from: $('#price-per-night input[name=seasonal-date-from-' + (index + 1) + ']').val(),
seasonal_date_to: $('#price-per-night input[name=seasonal-date-to-' + (index + 1) + ']').val(),
seasonal_adult_weekday: $('#price-per-night input[name=seasonal-adult-weekday-' + (index + 1) + ']').val(),
seasonal_adult_weekend: $('#price-per-night input[name=seasonal-adult-weekend-' + (index + 1) + ']').val(),
seasonal_child_weekday: $('#price-per-night input[name=seasonal-child-weekday-' + (index + 1) + ']').val(),
seasonal_child_weekend: $('#price-per-night input[name=seasonal-child-weekend-' + (index + 1) + ']').val(),
price: obj2
};
});
})
return obj1;
}
感谢任何帮助!
答案 0 :(得分:0)
我没有太多关注,但根据输入的名称,你似乎没有跟踪"子索引"数字,以避免碰撞。你结束了这个:
您希望过滤器2的价格规则为3和4.更简单的方法是添加父级的索引号:
这将确保您拥有唯一的输入名称,以便您可以正确捕获所有数据。