2016-06-08 53 views
0

我有一個複選框列表類似以下內容:在複選框,點擊保存值到一個數組

$('.check-user').click(function() { 
    var $this = $(this); 
    var user_id = $this.attr('value'); 
    var brandContainer = $this.closest('.pop-state').siblings('.pop-brands'); 
    brandContainer.html('<p style="margin: 10px !important;">Processing... </p>'); 
    $.post('/user/usersBrands', { userId: user_id } , function(data) { 

     var brands = JSON.parse(data); 
     var container = $('<div class="pop-mission-co" />'); 

     brands.forEach(function (brand, index) { 
      var isRegisteredToBrand = null; 
      if(brand.userId==null) 
      { 
       isRegisteredToBrand = false; 
      } 
      else{ 
       isRegisteredToBrand = true; 
      } 
      container.append(buildBrand(brand.id, brand.name, isRegisteredToBrand, index)); 
     }); 
     function buildBrand(id, name, isActive, index) { 
      var isChecked = isActive ? 'checked="checked"' : ' '; 
      return $(
       '<div class="pop-mission-to">' + 
        '<label>' + 
         '<input class="check-brand"' + 
          isChecked + 
          'type="checkbox"' + 
          'name=""' + 
          'value="' + id + '"' + 
          'data-id="' + index + '">' 
           + name + 
        '</label>' + 
       '</div>' 
      ); 
     } 
     brandContainer 
      .children('p').remove(); 
     brandContainer 
      .html(container) 
      .find('.pop-mission-co').show(); 
    }); 
    brandContainer.on('change', '.check-brand', function() { 

     console.log($(this).attr("checked")); 

    }); 
}); 

在jQuery的一個$。員額後創建的複選框列表,現在我需要處理該事件時,每一項複選框被選中類似以下內容:

brandContainer.on('change', '.check-brand', function() { 

      console.clear(); 
    var checked = ""; 
    if($(this).attr("checked")) 
    { 
     checked = "checked"; 
    } 
    else 
    { 
     checked = "unchecked"; 
    } 
    console.log(checked); 
    console.log($(this).val()); 

     }); 

正如你可以看到我使用的是委託事件處理程序檢查複選框是否已被檢查或不...當1個複選框用戶點擊我應該把它放在該陣列如下:

Array { "checked", "1" } 

當用戶點擊另一個複選框數組應該這樣被更新:

Array { "checked", "1", "checked", "2" } 

如果用戶取消選中,他已經選中該複選框,可以說第二個與值2,數組應該像這樣的:

陣{ 「檢查」, 「1」, 「未登記」, 「2」}

則處理前進......誰能幫我這個?非常感謝 ! :)

+0

傢伙,我已經更新了我的問題,我表示取如何在當前文本框的值,並將其是否被選中或不... – perkes456

+0

我想你想創建動態命名屬性。檢查這一個http://stackoverflow.com/questions/2318532/dynamically-name-a-json-property –

+0

爲什麼不創建一個數組像'陣列{1 =>'檢查',2 =>'未選中'}' –

回答

1

我認爲這可能工作。

var checkbox_events = []; 
brandContainer.on('change', '.check-brand', function() { 
    if($(this).is(':checked') { 
     checkbox_events[$(this).val()] = 'checked'; 
    } else { 
     checkbox_events[$(this).val()] = 'unchecked'; 
    } 
}); 
+0

它會產生以下輸出:[「checked」,1] –

+0

當相同的複選框未選中時,我不應該將新值添加到數組中,而只需更新當前的值...並且每個複選框都應該像一個數組本身...你明白我想說什麼嗎? :) – perkes456

+0

我已經更新了我的答案。我想你想要的是一個具有所有複選框狀態的數組。如果有一個國家存在,它將被「更新」。如果我理解你的話,我認爲我的更新答案應該有效。 – phreakv6