javascript - 使用 .serializeArray() Javascript 时如何自定义键值对?
问题描述
代码示例:
$('#simpan').click(function(){
var data = $('.serialize').serializeArray();
console.log(data)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<div class="row">
<div class="col-lg-12">
<label><input type="radio" name="perkawinan" id="" class="form-control-sm serialize" value="belum kawin" data-title="Perkawinan"><b> Belum Kawin</b></label> 
<label><input type="radio" name="perkawinan" id="" class="form-control-sm serialize" value="kawin" data-title="Perkawinan"><b> Kawin</b></label> 
<label><input type="radio" name="perkawinan" id="" class="form-control-sm serialize" value="duda/janda" data-title="Perkawinan"><b> Duda/Janda</b></label> 
<label><input type="radio" name="perkawinan" id="" class="form-control-sm serialize" value="bawah umur" data-title="Perkawinan"><b> Bawah Umur</b></label> 
</div>
</div>
<div class="row">
<div class="col-lg-12">
<input type="text" name="pekerjaan" id="" class="form-control form-control-sm serialize" placeholder="Pekerjaan..." data-title="Pekerjaan">
</div>
</div>
<div class="row">
<button type="button" class="btn btn-sm btn-outline-success" id="simpan">SIMPAN</button>
</div>
结果将是一个对象数组,其中包含名称和值的键->值对。当我们执行 .serializeArray() 时如何添加额外的键?
所需的输出是:
[
{
"name": "perkawinan",
"value": "kawin",
"title": "Status Perkawinan",
"type": "radio"
},
{
"name": "pekerjaan",
"value": "",
"title": "Pekerjaan Pasien",
"type": "text"
}
]
解决方案
抱歉回复晚了,正忙于中小企业工作......你可以通过两种方式做到这一点
HTML
<div class="container">
<div class="row">
<form action="" method="post" enctype="multipart/form-data" class="serialize">
<div clas="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" name="perkawinan" class="custom-control-input" value="Belum Kawin" data-title="Title 1">
<label class="custom-control-label" for="customRadioInline1">Belum Kawin</label>
<input type="radio" name="perkawinan" class="custom-control-input" value="Duda/Janda" data-title="Title 2">
<label class="custom-control-label" >Duda/Janda</label>
</div>
<div class="form-group" style="margin:15px 0">
<label>Pekerjaan</label>
<input type="text" name="pekerjaan" class="form-control" placeholder="Pekerjaan" data-title="Title 3">
</div>
</div>
<div clas="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<input name="submit" type="button" value="Submit" id="simpan" class="btn btn-success">
</div>
</form>
<div clas="col-xs-12 col-sm-12 col-md-12 col-lg-12" id="output" style="margin-top:20px"></div>
</div>
</div>
方法一
即使文本框值为空,这也会返回对象
<script type="text/javascript">
$(function()
{
$('#simpan').on('click',function()
{
var data = $('.serialize :input').serializeArray();
var data = $.each(data, function(i,obj){obj.title = $("input[name='"+obj['name']+"']").data('title');obj.type = $("input[name='"+obj['name']+"']").attr('type');});
$('#output').html(JSON.stringify(data))
})
});
</script>
方法二
这将返回具有值的对象
<script type="text/javascript">
$(function()
{
$('#simpan').on('click',function()
{
var data = $( ".serialize :input").filter(function () {return !!this.value;}).serializeArray();
var data = $.each(data, function(i,obj){obj.title = $("input[name='"+obj['name']+"']").data('title');obj.type = $("input[name='"+obj['name']+"']").attr('type');});
$('#output').html(JSON.stringify(data))
})
});
</script>
这是一个工作小提琴JSFiddle
推荐阅读
- python - Python 在没有 PyDub 的情况下从 MP3 和 FLAC 读取相对 dB
- go - Cloudfoundry 密码 - 代码漏洞
- python - 将 sigma 公式转换为 python 数据集
- react-native - React Native 滚动视图动画标题:在调整大小时更改布局的高效方法?
- laravel - 尝试在laravel中重置密码时尝试获取非对象的属性
- css - 试图调整我的轮播,轮播占据了太多的页面,我怎样才能让它成为中心的一个小功能?
- android - 无法更新 ssl 上下文
- ios - 如何关闭/关闭辅助情节提要
- powershell - $Hostname.contains | 其中 {$_.name -Match ("test")})
- css - 为什么 col-sm 和 col-md 等工作正常时不能协同工作?