jQuery MiniUI

 找回密码
 立即注册
查看: 3439|回复: 3
打印 上一主题 下一主题

求教:动态添加表单,获取表单值,设置表单值 [复制链接]

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2021-3-3 17:16:55 |只看该作者 |倒序浏览

如图所示,表单是动态添加上去的,点击保存按钮获取表单中的值,怎样组合成一个数组对象传到后台。然后再试打开的话把上次保存的值回显到表单里,如何进行遍历设置值。
  1. function addItemHtml(index, item) {
  2.         if(!index) {
  3.             index = 1;
  4.         }
  5.         var htmlStr = '<div class="card" id="card_'+ index +'">' +
  6.             '<div class="card-header"><h3 class="card-title">候选名称'+ index +'</h3><a class="card-btn-del" href="javascript:void(0)" onclick="delElement(\'card_\' + \''+index+'\')">删除</a></div>' +
  7.             '<div class="card-body">' +
  8.             '<div class="form-item">' +
  9.             '<div class="form-block">' +
  10.             '<label class="form-label"><span class="required-tip">*</span>分所中文名称:</label>' +
  11.             '<div class="form-input">' +
  12.             '<input class="mini-textbox" id="branchFirmName_' + index +'" name="name" emptyText="请输入分所中文名称" errorMode="border" required requiredErrorText="分所中文名称不能为空">' +
  13.             '</div>' +
  14.             '</div>' +
  15.             '</div>' +
  16.             '<div class="form-item">' +
  17.             '<div class="form-block">' +
  18.             '<label class="form-label"><span class="required-tip">*</span>分所中文简称:</label>' +
  19.             '<div class="form-input">' +
  20.             '<input class="mini-textbox" id="branchFirmShortName_'+ index +'" name="shortName" emptyText="请输入分所中文简称" errorMode="border" required requiredErrorText="分所中文简称不能为空" onValuechanged="methods.onNameValueChanged(e, \'branchFirmShortPinyin_\' + \''+index+'\')">' +
  21.             '</div>' +
  22.             '</div>' +
  23.             '</div>' +
  24.             '<div class="form-item">' +
  25.             '<div class="form-block">' +
  26.             '<label class="form-label"><span class="required-tip">*</span>分所英文名称:</label>' +
  27.             '<div class="form-input">' +
  28.             '<input class="mini-textbox" id="branchFirmEnglishName_'+ index +'" name="engilshName" emptyText="请输入分所英文名称" vtype="isEnglish" errorMode="border" required requiredErrorText="分所英文名称不能为空">' +
  29.             '</div>' +
  30.             '</div>' +
  31.             '</div>' +
  32.             '<div class="form-item">' +
  33.             '<div class="form-block">' +
  34.             '<label class="form-label"><span class="required-tip">*</span>分所简称拼音:</label>' +
  35.             '<div class="form-input">' +
  36.             '<input class="mini-textbox" id="branchFirmShortPinyin_'+ index +'" name="pinYin" emptyText="请输入分所简称拼音" errorMode="border" required requiredErrorText="分所简称拼音不能为空">' +
  37.             '</div>' +
  38.             '</div>' +
  39.             '</div>' +
  40.             '</div>' +
  41.             '</div>';
  42.         return htmlStr;
  43.     }
  44. function addRow(eleId) {
  45.         var count = $("#" + eleId).find(".card").length;
  46.         count = count + 1;
  47.         if(count > maxCount){
  48.             mini.alert("候选名称最多添加10条");
  49.             return;
  50.         }
  51.         var htmlStr = addItemHtml(count);
  52.         $("#" + eleId).append(htmlStr);
  53.         mini.parse(htmlStr);
  54.     }

  55. function delElement(eleId) {
  56.         var num = $("#shortList").find(".card").length;
  57.         if(num < 6){
  58.             mini.alert("至少保留5条");
  59.             return;
  60.         }
  61.         mini.showMessageBox({
  62.             title: "提示",
  63.             message: "确定要删除该条记录吗?",
  64.             buttons: ["ok", "cancel"],
  65.             iconCls: "mini-messagebox-question",
  66.             callback: function(action){
  67.                 if(action == "ok"){
  68.                     $("#" + eleId).remove();
  69.                     for (var i = 0; i <= num; i++) {
  70.                         $("#shortList .card").eq(i).find(".card-title").html("候选名称" + (i + 1));
  71.                     }
  72.                 }
  73.             }
  74.         })
  75.     }
  76. function getItemsData() {
  77.         var arr = [];
  78.         $("#shortList").find(".card").each(function () {
  79.             var _id = $(this).attr("id");
  80.             var obj = new Object();
  81.             var controls =  mini.getChildControls(_id);
  82.             for(var i = 0; i < controls.length; i++){
  83.                 var control = controls[i];
  84.                 obj[control.name] = control.value;
  85.             }
  86.             arr.push(obj);
  87.         });
  88.         return arr;
  89.     }
复制代码


附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 8Rank: 8

沙发
发表于 2021-3-4 09:22:05 |只看该作者
本帖最后由 felt 于 2021-3-4 09:24 编辑
  1. function getItemsData() {
  2.         var obj = {};
  3.         $("#shortList").find(".card").each(function () {
  4.             var _id = $(this).attr("id");         
  5.             var form = new mini.Form(_id);
  6.             var data = form.getData();
  7.             obj[_id] = data;           
  8.         });
  9.         return obj;
  10.     }
复制代码
获取到的数据是这样的格式
{“card1":{name:"",shortName:"",engilshName:"",pinYin:""},"card2":{...}}

回填也是类似,把每部分当成一个小的表单,使用表单赋值就可以了。

Rank: 3Rank: 3

板凳
发表于 2021-3-4 14:29:57 |只看该作者
felt 发表于 2021-3-4 09:22
获取到的数据是这样的格式
{“card1":{name:"",shortName:"",engilshName:"",pinYin:""},"card2":{...}}

非常感谢,如果我想这个动态添加的封装成组件,添加表单时把模板写在body里然后用克隆的方式复制添加一条记录,这种可以实现吗?

Rank: 8Rank: 8

地板
发表于 2021-3-4 15:24:24 |只看该作者
Aisin丿Gioro 发表于 2021-3-4 14:29
非常感谢,如果我想这个动态添加的封装成组件,添加表单时把模板写在body里然后用克隆的方式复制添加一条 ...

肯定可以的

Archiver|普加软件

GMT+8, 2024-11-26 14:28 , Processed in 1.030603 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部