2015-10-04 4 views
0

У меня есть форма сбора производственных данных работника, следующий код:Javascript структура объекта

$(document).on('click','input#Apply.btn.btn-success',function(e){ 

    var TableData; 
    TableData = storeTblValues(); 
    var TableData1 = []; 

    $.each(TableData,function(index,value){ 

     if(value.quantity && value.quantity >0 && value.quantity < 65535){  
      TableData1[index]={ 

       "employee_id" : value.employee_id 
      , "operation_id" : value.operation_id 
      , "quantity" : value.quantity  
      } 

     } 
      }); 
    // retrieving employee_id to fetch date data from date input   
    $.each(TableData1,function(index,value){   
     employee_idj = value.employee_id; 
     }); 

    $('#cboxClose').click(); 
    var datee = dateConvToMySqlDate($('input#dateOfProduction_'+employee_idj+'.dateOfProduction_.hasDatepicker').val()); 
    if(!datee){alert(dateMessager);e.preventPropagation();return false;} 
    var noOfRecords = TableData1.length; 

    for(i=0;i<noOfRecords;i++) 
    {TableData1[i]['production_date'] = datee;} 

    var TableData1 = $.toJSON(TableData1); 
    alert(JSON.stringify(TableData1)); 
    var qurl = '<?php echo base_url();?>production_entry/submitData'; 
    $.ajax({ 
    url: qurl, 
    type: "POST",  
    data:"pTableData=" + TableData1,   
    success: function(data){ 

      var data = $.parseJSON(data); 
      if(data.status == 'error') 
      { 
      alert(data.errorMessage); 
      }else{ 
      alert(noOfRecords+' records sent and '+' '+data.successMessage); 

       $('#tr_'+employee_idj).fadeOut(); 
      } 
      } 
    }); 

    function storeTblValues() 
    {  

     var TableData = new Array(); 

     $('#searchOperationTable tr').each(function(row, tr){ 

     var x = parseInt($(tr).find("input.quantity").val()); 

      if(x){ 
      TableData[row]={ 

       "employee_id" : parseInt($(tr).find("input.hiddenemployeeId").val()) 
      , "operation_id" : parseInt($(tr).find('td:eq(0)').text()) 
      , "quantity" : parseInt($(tr).find("input.quantity").val())  
      } 
     } 
      }); 
      TableData.shift(); 
      return TableData; 
    } 

}); 

Когда кто-то ввести значение количество, равное 0 ошибочно, то объект TableData1 становится

[ null,{"employee_id" : 3816,"operation_id":3,"quantity":10}] 

, и скрипт перестает работать. Я хочу исключить этот нуль. Что делать?

ответ

0

Ваш чек if(x) является ложным при вводе 0, поэтому TableData[row] не будет установлен для этой записи. Вместо этого установите TableData с помощью array.push:

 if(x){ 
     TableData.push({ 
      "employee_id" : parseInt($(tr).find("input.hiddenemployeeId").val()) 
     , "operation_id" : parseInt($(tr).find('td:eq(0)').text()) 
     , "quantity" : parseInt($(tr).find("input.quantity").val())  
     }) 
    } 
0

Если вы не заботитесь о значениях индекса массива, то вы можете использовать push(value) вместо array[index]=value. как в моем примере:

TableData.push({ 
    "employee_id" : parseInt($(tr).find("input.hiddenemployeeId").val()), 
    "operation_id" : parseInt($(tr).find('td:eq(0)').text()), 
    "quantity" : parseInt($(tr).find("input.quantity").val())  
});` 
Смежные вопросы