jQuery Form表单数据获取与绑定工具实现

作者:清欢

时间:2026-10-29

浏览:166

本文介绍了一个基于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两个核心方法,开发者可以高效处理前后端数据交互,希望此方案能为相关开发工作提供实用参考。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章