2013-09-21 130 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

相关问题