表格中有两个按钮。
<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 :(得分:1)
由于<div style="font-family='Open Sans'">
,您可以知道点击了哪个按钮。
因此,如果您想要按钮的值,您只需获取document.activeElement
属性,对其进行编码并将其放入uri参数的末尾。
value
答案 1 :(得分: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('&'));
&#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;
答案 2 :(得分:0)
我用这个
var $form = $(this);
var data = $form.serialize()+'&' + encodeURI(document.activeElement.getAttribute('name')) + '='+encodeURI(document.activeElement.getAttribute('value'));