2017-07-29 152 views
0

這是一個關於邏輯更多的問題,而不是技術細節。對象內部的foreach循環中的jQuery對象

我保存由JavaScript使用對象創建的窗體的內容,我設法成功保存主窗體內容,但我無法保存子窗體的內容。

這裏有一個的jsfiddle這更好的說明問題了:https://jsfiddle.net/96wstepj/

1)轉到「定價每晚」>「季節性定價」,然後單擊「添加季節性價格篩選」,填寫領域

2)然後單擊「添加標價規定」,並填寫領域

3)單擊「全部保存」,你會看到所有的內容顯示正確的JSON格式警報

4.)現在再次點擊「添加季節性價格過濾器」,填寫字段,然後點擊「添加價格規則」並填寫字段(所以現在您有兩個季節性價格過濾器和每個價格規則)

5)單擊「全部保存」,你會看到標價規定的內容在每個季節過濾重複(見「價格」對象鍵)

問題:https://ibb.co/mgZHFQ

這是功能是將表單內容添加到對象中:

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

這是什麼問題? – inarilo

+0

並非所有內容都正確添加到JSON中:https://ibb.co/mgZHFQ –

+0

在主要說明中提供了所有HTML/CSS/JS的工作示例:https://jsfiddle.net/96wstepj/ –

回答

0

我沒有看太多,但基於輸入名稱,它看起來像沒有跟蹤「子索引」數字以避免衝突。你風與此:

  • 季節性過濾器1種
    • 價格規則1種
    • 價格規則2
  • 季節性過濾器2
    • 價格規則1
    • 價格規則2

您希望篩選器2的價格規則爲3和4。一個簡單的方法將也添加父的索引號:

  • 季節性過濾器1
    • 價格規則1-1
    • 價格規則1-2
  • 季節過濾器2
    • 價格規則2-1
    • 價格規則2-2

這將確保你有獨特的輸入名稱,以便您可以正確地捕獲到所有的數據。