动态设置form表单的元素值

因为经常用到的功能,所以我想到封装一个函数,用起来更方便快捷。。

先来看效果图如下:

var data = {a:'aaaa', b:'2', 'c':[1,2,4]}

这就相当于 ajax 返回的json, 元素是通过 name 来查找的, 其基本形式: name : value  

checkbox 比较特殊,它是多个并存,所以要 "选中" 它得通过值来查找, 值对上了,就把它"选中"

当然, 还有清除数据的情况:

var data = {a:'', b:'', 'c':''}

像这样,设置为空值,就可以了。

说到这里,是不是很好玩呀?

ok,下面就是基于 jqery 写的代码:

复制代码
<form id="form1" >

<input type="text" name="a" /> <br/> <input type="radio" name="b" value="1" checked />1 <input type="radio" name="b" value="2" />2 <input type="radio" name="b" value="3" />3 <br/> <input type="checkbox" name="c[]" value="1" />a <input type="checkbox" name="c[]" value="2" />b <input type="checkbox" name="c[]" value="3"/>c <input type="checkbox" name="c[]" value="4"/>d
</form> <script type="text/javascrip"> //编辑表单 $.fn.formEdit = function(data){ //data = {"text":"value", "checkbox":[1,2,4], "radio":"10"};

if(typeof data == "undefined"){ this.reset(); return this; } return this.each(function(){var input, name; for(var i = 0; i < this.length; i++){ input = this.elements[i];
        //修正checkbox
       if(input.type == "checkbox"){
            name = input.name.replace(/(.+)\[\]$/, "$1");
        }else{
            name = input.name;
        }
    if(typeof data[name] == "undefined") continue;
        switch(input.type){
            case "checkbox":                if(data[name] == ""){
                    input.checked = false;
                }else{
                    //数组查找元素
                    if(data[name].indexOf(input.value) > -1){
                        input.checked = true;
                    }else{
                        input.checked = false;
                    }
                } }
break; case "radio": if(data[name] == ""){ input.checked = false; }else if(input.value == data[name]){ input.checked = true; } break; default: input.value = data[name]; } } }) }; data = { "a":"张三", "b":[1,3,4], "c":"2", }; $('#form1').formEdit(data); </script>
复制代码

 

 

 

posted @   心随所遇  阅读(3320)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示