2016-09-16 35 views
2

我有一个表格说,“坐”在表内如何选择一个表中位于所有输入字段

   <form id="form"> 
      <input type="submit" value="send" class="btn btn-w-m btn-primary" style="float: left;">Add transaction</input> 
      <table class="table table-striped table-bordered table-hover " id="editable" > 
       <thead> 
       <tr> 
        <th>Date</th> 
        <th>Name<br>(Last name, Firstname,<br> 
         or Business name) 
        </th> 
        <th>Address</th> 
        <th>Phone</th> 
        <th>Price with VAT</th> 
        <th>VAT</th> 
        <th>Transaction type</th> 
        <th>Currency</th> 
        <th>Installments</th> 
       </tr> 
       </thead> 
       <tbody> 
       <tr> 
        <td><input type="date" name="date"/></td> 
        <td><input type="text" name="name"/></td> 
        <td><input type="text" name="address"/></td> 
        <td><input type="text" name="phone"/></td> 
        <td><input type="text" name="price_with_vat"/></td> 
        <td>25%(from database)</td> 
        <td class="exclude"><select name="transaction_type"> 
          <option>value1</option> 
          <option>value2</option> 
          <option>value3</option> 
         </select></td> 
        <td class="exclude"><select name="currency"> 
          <option>Euro</option> 
          <option>USD</option> 
          <option>Pound</option> 
         </select></td> 
        <td class="exclude"><select name="installments"> 
          <option>Yes</option> 
          <option>No</option> 
         </select></td> 
       </tr> 
       </tbody> 

我要的是选择所有的输入值,并发送一个Ajax请求的PHP结束。问题是,在我的jquery函数(代码如下)我无法收集所有的输入。还有,虽然我有preventDefault页面仍然刷新。

var request; 
$('#form').submit(function(event){ 

    if (request){ 
     request.abort(); 
    } 

    var form = $(this) 

    var $inputs = $form.find("input, select, button, textarea"); 
    var serializedData = $form.serialize(); 
    $inputs.prop("disabled", true); 
    console.log(serializedData); 
    event.preventDefault(); 
}); 
+0

您可以使用您的数据PHP页面:$ ( '#formName')。序列()。请参阅链接https://api.jquery.com/serialize/ –

+0

我已经做了一个关于'preventDefault'的编辑请看看(见最后一句) – dios231

+1

var'form = $(this)'应该是'$ form' –

回答

1

试试这个代码

对于表单元素的值要包含在序列化的字符串, 的元素必须有一个name属性。使用此代码

$(document).ready(function() { 
    //Form submit event 
    $('#form').on('submit', function(e){ 

    // validation code here 
    if(!valid) { 
     e.preventDefault(); 
    } 

    //Serialized data 
    var datastring = $("#form").serialize(); 

    //Ajax request to send data to server 
    $.ajax({ 
     type: "POST", 
     url: "your url.php", 
     data: datastring, 
     success: function(data) { 
      alert('Data send'); 
     } 
    }); 
    }); 
}); 
+0

最后一个问题。为什么'select'输入不会从'serialieze()'函数收集? – dios231

+0

@ dios231:仅序列化“拾取”具有name属性的元素。 为您的选择标签提供一个名称以进行序列化。 –

0

尝试:

$('#form').on('submit', function (e) { 
e.preventDefault(); 
$.ajax({ 
    type: 'post', 
    url: 'yourpage.php', 
    data: $('#form').serialize(), 
    success: function(){ 
      alert('success'); 
       }, 
}); 
}); 
}); 
}); 

只需更改网址: 'yourpage.php' 与您要发送表单值

相关问题