Javascript 获取表单中相对于按钮的输入值

Javascript 获取表单中相对于按钮的输入值,javascript,jquery,forms,Javascript,Jquery,Forms,我有类似的表格: <form class="submission-form" method="POST" action="/post/create/"> <input type="text" name="title"> <textarea name="post_content"></textarea> <select name="visibility" class="form-control"> <option

我有类似的表格:

<form class="submission-form" method="POST" action="/post/create/">
  <input type="text" name="title">
  <textarea name="post_content"></textarea>
  <select name="visibility" class="form-control">
    <option value="1">Public</option>
    <option value="2">Private</option>
  </select>
  <input class="submit-button" type="button" value="Publish">
</form>

我应该如何执行此操作?

迭代输入、文本区域并选择元素,然后使用元素名称和值的属性创建一个对象:

$('.submit按钮')。在('click',function()上{
var o={};
$(this).最近('form'))
.find('输入,文本区域,选择')
.not(“:按钮”)
.each(函数({
o[$(this.attr('name')]=$(this.val()
});
控制台日志(o);
});

公开的
私有的

您可以使用
serializeArray()
然后在该数组上使用
reduce()
,以返回所需的对象

$(“表单”).submit(函数(事件){
var data=$(this).serializeArray().reduce(函数(r,e){
r[e.name]=e.value;
返回r;
}, {})
console.log(数据)
event.preventDefault();
});

公开的
私有的
使用
serializeArray()
为名称-值对创建对象和数组,并通过循环创建单个对象

$('form')。提交(函数(e){
e、 预防默认值();
var obj=$(this.serializeArray()
var final={};
$.each(对象、函数(索引、对象){
final[object.name]=object.value;
});
控制台日志(最终);
})

公开的
私有的

试试这个@PrasunJajodia,它返回一个数组,而不是一个对象。你真的需要一个对象吗?或者任何可以用作
数据:
选项的
$.ajax()
都可以吗?
$(this).closest(.submission form”).serialize()
将返回一个URL编码的字符串。有人创建了一个插件,它比这里列出的解决方案更好地处理一些边缘情况:
.closest()
.parents()更好
。它会在找到第一个匹配项时立即停止,而不是搜索整个DOM层次结构。@像这样的DOM结构中的Barmar实际上并不重要。无论如何,最接近的速度更快,所以我将其替换为:)
{
  title: "My first post",
  post_content: "Hello there!",
  visibility: 1
}