2013-09-21 198 views
0

grabData函數獲取選中複選框的值並將其提交給我的數據數組。什麼我想知道是如何設置的state0如果沒有選中的複選框被提交 - 我也想它alert選擇無時 - 驗證如果未選中複選框,則將狀態設置爲0

function grabData(checked){ 
     checked = typeof(checked) == 'undefined' ? false : checked; 
     var items = document.getElementsByClassName('product_category_selector'); 
     var data = []; 

     for(var i = 0; i < items.length; i++){ 
      if(items[i].type != 'checkbox' || items[i].checked != checked){ 
       continue; 
      } 

      data.push(items[i].getAttribute('data-id')); 
     } 

     return data; 
    } 
       $('body').on("click", "#brands_by_category_submit_btn", function (e) { 
        e.preventDefault();    
        var self = $(this); 
        var box = $("#catInfo"); 
        var id = $("#manID").data("id"); 
        var cat_id = grabData(); 

        var url = $("#brands_by_category_submit_btn").data("url"); 

        var data_array = { 
          id : id, 
          cat_id : grabData(true), 
          state: 1 
         }; 

          ajaxCall(url, data_array,'catInfo'); 

       }); 

回答

2

那麼首先你可以大大簡化你的grabData功能。

function grabData(checked) { 
    return $('.product_category_selector' + (checked? ':checked' : ':not(:checked)')).map(function (index, chk) { 
     return $(chk).data('id'); 
    }).get(); 
} 

然後單擊處理程序中,你可以這樣做:

var data = grabData(true); //get checked checkbox data-id values 

console.log(data.length); //if 0, no items were checked 
+0

由於功能與'寫的另一SO成員data.length'我會處理其經if語句如果= 0 ? –

+0

@JessMcKenzie是的,但是您不必檢查它是否明確等於0,因爲在JavaScript中0表示false,意味着'Boolean(0)'是'false'。寫入'if(0)'與'if(Boolean(0))'相同,所以你可以簡單地執行'if(data.length)'。三元操作也很有用,例如'var state = data.length? 1:0;'當長度爲0時,將狀態設置爲0,當長度爲0時,將狀態設置爲1。 – plalx

相關問題