jQuery Form表单数据获取与绑定工具实现
本文介绍了一个基于jQuery的formHelp插件,用于简化Form表单的数据处理。通过serializeJson方法可将表单数据序列化为JSON对象,支持Checkbox多值拼接;利用setForm方法可将JSON数据反向绑定至表单控件。文章包含核心代码逻辑及HTML测试示例,适用于需要快速实现表单数据交互的开发场景。
jQuery Form数据交互插件概述
在Web开发中,Form表单是数据交互的核心组件。开发者常需将前端表单数据提交至后端数据库,或将后端返回的JSON数据渲染至前端页面。为此,封装一个基于jQuery的formHelp插件能显著提升开发效率。该插件设计简洁,易于集成到现有项目中。
实现表单数据获取的核心方法是serializeJson。调用方式为$("#formid").serializeJson(),该函数会遍历表单内的所有输入控件,将其名称与值转换为键值对,最终返回一个JSON对象。
实现数据绑定至表单的核心方法是setForm。调用方式为$("#formid").setForm(json),该函数接收一个JSON对象作为参数,根据对象的键名查找对应的表单控件,并将值填充至输入框、文本域或选中相应的单选/复选框。
formHelp.js核心代码实现
以下是jquery.formHelp.js插件的完整源代码实现,涵盖了序列化与反序列化的核心逻辑。
/**
* 将form里面的内容序列化成json
* 相同的checkbox用分号拼接起来
* @param {dom} 指定的选择器
* @param {obj} 需要拼接在后面的json对象
* @method serializeJson
* */
$.fn.serializeJson=function(otherString){
var serializeObj={},
array=this.serializeArray();
$(array).each(function(){
if(serializeObj[this.name]){
serializeObj[this.name]+=';'+this.value;
}else{
serializeObj[this.name]=this.value;
}
});
if(otherString!=undefined){
var otherArray = otherString.split(';');
$(otherArray).each(function(){
var otherSplitArray = this.split(':');
serializeObj[otherSplitArray[0]]=otherSplitArray[1];
});
}
return serializeObj;
};
/**
* 将josn对象赋值给form
* @param {dom} 指定的选择器
* @param {obj} 需要给form赋值的json对象
* @method serializeJson
* */
$.fn.setForm = function(jsonValue){
var obj = this;
$.each(jsonValue,function(name,ival){
var $oinput = obj.find("input[name="+name+"]");
if($oinput.attr("type")=="checkbox"){
if(ival !== null){
var checkboxObj = $("[name="+name+"]");
var checkArray = ival.split(";");
for(var i=0;i<checkboxObj.length;i++){
for(var j=0;j<checkArray.length;j++){
if(checkboxObj[i].value == checkArray[j]){
checkboxObj[i].click();
}
}
}
}
}
else if($oinput.attr("type")=="radio"){
$oinput.each(function(){
var radioObj = $("[name="+name+"]");
for(var i=0;i<radioObj.length;i++){
if(radioObj[i].value == ival){
radioObj[i].click();
}
}
});
}
else if($oinput.attr("type")=="textarea"){
obj.find("[name="+name+"]").html(ival);
}
else{
obj.find("[name="+name+"]").val(ival);
}
})
}
HTML测试环境搭建与验证
为了验证插件功能,以下提供一段标准的HTML测试代码。该页面引入了jQuery库及formHelp.js,并构建了一个包含多种输入类型(文本、单选、复选、下拉等)的表单,用于演示setForm的数据绑定效果及submitForm的数据获取逻辑。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>jQueryFormHelp练习</title>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script>
<script src="jquery.formHelp.js"></script>
<script type="text/javascript">
$(function () {
$("#form").setForm({a: '张三家的附近可考虑将', b: '王五', c: '王五', d: 'nishi yaldjlkfjal ',e:7,f:'8;10',i:'王'});
});
function submitForm(){
console.log($("#form").serializeJson('id:12;name:13;'));
}
</script>
</head>
<body>
<form id="form">
<div><input type="text" name="a" /></div>
<div><input type="text" name="b" id="b" /></div>
<div><input type="hidden" name="c" id="c" /></div>
<div>
<textarea name="d" rows="8" cols="40"></textarea>
<input type="checkbox" name="f" value="10"/>
</div>
<div><select name="e">
<option value="5" selected="selected">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select></div>
<div>
<input type="checkbox" name="f" value="8" />
<input type="checkbox" name="f" value="9"/>
</div>
<div>
<input name="i" type="radio" value="王" />王
<input name="i" type="radio" value="小" />小
</div>
<div>
<input type="button" name="g" value="Submit" id="g" onclick="submitForm()"/>
</div>
</form>
</body>
</html>
上述内容完整展示了利用jQuery插件获取Form表单内容及将数据绑定至Form表单的全过程。通过serializeJson与setForm两个核心方法,开发者可以高效处理前后端数据交互,希望此方案能为相关开发工作提供实用参考。
JS转整数出现NaN怎么办?常见异常处理方案
2026-11-05 16:27:31
推荐几款免安装的在线JS压缩工具
2026-11-05 14:54:53
JS怎么使用JSON.stringify实现JSON格式化与缩进
2026-11-04 10:47:30
CodePen、JSFiddle 与 StackBlitz:主流 JS 在线编辑器对比
2026-11-03 21:07:49
JS字符串转数字后怎么正确判断是否为有效数值
2026-11-03 20:04:15
