[英]jquery serialize collecting multiples form which group values by name
如何从输入中收集倍数并将输出分组为按名称组合值的字符串
例如:
<div class="register">
<input type="text" name="full_name">
<textarea name="address"></textarea>
<input type="radio" name="sex" value="male">
<input type="radio" name="sex" value="female">
<input type="checkbox" name="hobies" value="foodball">
<input type="checkbox" name="hobies" value="basketball">
<input type="button" class="submit" value="Submit">
</div>
如何获得输出将是字符串或类似的东西
// 字段名称:[值]
我正在尝试这样:
$('.submit').click(function(){
var InputCollect = $('.register').find(':input');
$(InputCollect).each(function(){
names = $(this).attr('name');
values = $(this).attr('value');
// the output will be string or something like this:
// full_name: jhon doe
// address: some street
// gender: male
// hobies: football, basketball (combine multiple values:not if checked)
});
});
我不知道如何按名称对多个值进行分组
制作该输出的最佳方法是什么.. 使用 jQuery 序列化或每个函数? 谢谢关注
您可以使用:checked
找到选中的复选框。 然后,您可以将它们放入键值存储中,其中键是复选框的名称,值是选定复选框的数组:
$('.submit').click(function(){
var InputCollect = $('.register').find(':input');
let form = {}
$('input[type=text], textarea, input[type=radio]:checked', '.register').each(function(){
const name = $(this).attr('name');
const value = $(this).val();
if(value.trim() !== '') {
form[name] = value;
}
});
$('input[type=checkbox]:checked', '.register').each(function(){
const name = $(this).attr('name');
const value = $(this).val();
if(form[name] === undefined) {
form[name] = [value];
} else {
form[name].push(value);
}
});
console.log(form);
});
在这里,我不得不将逻辑拆分为两个回调,因为处理文本输入和收音机与处理复选框不同,尽管如果需要,您仍然可以将它们合并到一个回调中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.