2017-08-16 36 views
0

我在窗體中有兩個按鈕。如何在jQuery的serialize()函數中包含按鈕值?

<button type="submit" class="btn btn-danger" value="Send Back" name="Save">Send Back</button> 
    <button type="submit" class="btn btn-primary" value="Approve" name="Save">Approve</button> 

當我使用jquery $.ajax()發佈形式數據,表格數據被第一序列化。

(function() { 
    'use strict'; 
    function process(event) { 
     event.preventDefault(); 
     var $form = $(this); 
     var data = $form.serialize(); 
     console.log('posted data', data); 

     $.ajax({ 
      type: 'POST', 
      url: url, 
      data: data 
     }).done(function(data) { 
      ... 
     }); 
    } 
    $(document).on('submit', 'form', process); 
})(); 

在這裏,在我的console.log()輸出,我可以看到表格中的所有其他領域的序列化,但在提交按鈕的值丟失。

是否有一些設置來告訴jQuery包含serialize()函數的按鈕值?

回答

0

嘗試用map()功能和創建像serialize()

var res = $('form').children().map(function(){ 
 
if($(this).attr('name')) //prevent the element without name 
 
return $(this).attr('name')+'='+$(this).attr('value') 
 
}).get(); 
 

 
console.log(res.join('&'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
<input name="sss" value="ssss"> 
 
<input name="sss" value="ssss"> 
 
    <button type="submit" class="btn btn-danger" value="Send Back" name="Save">sss</button> 
 
    <p>ddddddddd</p> 
 
    <button type="submit" class="btn btn-primary" value="Approve" name="Save">sss</button> 
 
</form>

+0

但是這個map()會告訴哪個按鈕被點擊了? ...因爲這兩個按鈕都是表單的子項。 – Blaise

+0

地圖不會告訴你點擊了哪個按鈕?它只是從按鈕中獲取值。並且爲什麼使用2個以一種形式提交,從一個到另一個之間存在一些差異..就像隱藏的可見顯示一樣。如果不是,請顯示完整的表單html代碼 – prasanth

0

字符串可以使用知道哪個按鈕被點擊感謝document.activeElement

所以,如果你想要的按鈕的值,你可以只取value屬性,編碼它​​,並放在你的uri參數的末尾。

(function() { 
    'use strict'; 
    function process(event) { 
     event.preventDefault(); 
     var $form = $(this); 
     var data = $form.serialize()+'&save='+encodeURI(document.activeElement.getAttribute('value')); 
     console.log('posted data', data); 

     $.ajax({ 
      type: 'POST', 
      url: url, 
      data: data 
     }).done(function(data) { 
      ... 
     }); 
    } 
    $(document).on('submit', 'form', process); 
})(); 
相關問題