2016-04-28 29 views
0

如何獲取最接近的文本框的值,而點擊按鈕?實際上,我創建了一個包含五列的表格,其中兩列將具有動態生成的文本框,並且每個列都有單獨的ID。最後一列將包含保存按鈕。點擊按鈕時,這些值應該保存在數據庫中。我試過像這樣:jQuery - 獲取最接近的文本框的值

var a = 0; 
    var b = 0; 
    var table; 
    //var c = 0; 
    jQuery(document).ready(function(){ 
     jQuery.ajaxSetup({ cache: false });  

     table = jQuery("#table_billing").dataTable({ 
       "sAjaxSource": "includes/inc-billing2-db.php?mode=billing_dataTable", 
       "bDestroy": true, 
       "bPaginate": false, 
       "bInfo": false, 
       "bFilter": false, 
       "bSort": false, 
       "aoColumnDefs": [ 
        { 
         "aTargets": [2], 
         "mRender": function(data, type, row) { 
          return '<input type="text" class="form-control invoice_number" name="invoice_number" id="invoice_number_'+ a +'" placeholder="Invoice Number" required="required" onblur="getvalue(this)">'; 
          var x = row[3]; 
          var y = row[4]; 

         } 
        }, 
        { 
         "aTargets": [3], 
         "mRender": function(data, type, row) { 
          return '<input type="text" class="form-control date" name="invoice_date" id="invoice_date_'+ b +'" placeholder="Invoice Date" required="required">'; 
         } 
        }, 
        { 
         "aTargets": [4], 
         "mRender": function(data, type, row) { 
          return '<input type="button" class="btn-group btn-default btn-sm save" value="Save" name="save_bill" id="save_bill" onclick="jQuery(this).save(' + row[3] + ', ' + row[4] + ', ' + jQuery("#invoice_number_0").val() + ');">'; 
         } 
        } 
       ], 
       "fnCreatedRow": function(nRow, aData, iDisplayIndex, iDisplayIndexFull){ 
        a = a + 1; 
        b = b + 1; 
        //c = c + 1; 
       } 
      }); 

      jQuery.fn.save = function (id, contract_invoice_request_id, value){ 
       alert(id); 
       alert(contract_invoice_request_id); 
       alert(value); 

      if(jQuery("#invoice_number").val() == ''){ 
       alert("Please enter the invoice number!"); 
       jQuery("#invoice_number").focus(); 
      } 
      if(jQuery("#invoice_date").val() == ''){ 
       alert("Please select the invoice date!"); 
       jQuery("#invoice_date").focus(); 
      } 

      jQuery.ajax({ 
       type: "POST", 
       url: "includes/inc-billing-db.php?mode=save_billing", 
       data:{ "contract_id": aData[2], 
        "invoice_number": jQuery("#save_bill").val(), 
        "invoice_date": jQuery("#invoice_date").val() 
        }, 
       success: function(data, text){ 
         jQuery.msgbox_success(data.message); 
         jQuery("#billing_"+this.id).closest('tr').remove(); 
         jQuery("#date_"+this.id).closest('tr').remove(); 

       }  
      }); 
    } 
}); 
function getvalue(txt){ 
       alert(txt.id); 
       var tr = $("#"+ txt.id).closest('tr'); 
       console.log(tr); 
       var data = table.row(tr).data(); 
       alert(data); 
       data.invoice_number = txt.val(); 
      } 

但是,我得到的錯誤,因爲table.row不是一個函數。什麼是錯的,我該怎麼辦?

+0

在getValue函數試圖取代'VAR數據= table.row(TR)。數據();'和'tr.data();' –

+0

@Psyco殺手:你意思是這樣的:var data = tr.data();? –

+0

是的,因爲您之前已經定義了它。 –

回答

0

請使用此代碼

function getvalue(txt){ 
    var txtValue = $(txt).val(); 

console.log(txtValue); 
alert(txtValue); 

var tr = $(txt).closest('tr'); 
console.log(tr); 

// note set correct column number 
tr.find("td").eq(0).text(txtValue); 

} 
+0

同樣的問題正在出現Riyas,它顯示table .row不是函數。我嘗試使用tr.text(),它將前面各列中的所有值一起給了我。有什麼辦法讓他們分開嗎? –

+0

你獲得文本框的值? –

+0

我從文本框中獲得了該值,但無法獲取前一列中的值。 –