如何在jQuery serialize()函数中包含按钮值?

时间:2017-08-16 14:15:25

标签: javascript jquery serialization

表格中有两个按钮。

    <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()函数的按钮值?

3 个答案:

答案 0 :(得分:1)

由于<div style="font-family='Open Sans'">,您可以知道点击了哪个按钮。

因此,如果您想要按钮的值,您只需获取document.activeElement属性,对其进行编码并将其放入uri参数的末尾。

value

答案 1 :(得分:0)

尝试使用map()函数并创建类似serialize()

的字符串

&#13;
&#13;
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('&'));
&#13;
<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>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

我用这个

var $form = $(this);
var data = $form.serialize()+'&' + encodeURI(document.activeElement.getAttribute('name')) + '='+encodeURI(document.activeElement.getAttribute('value'));