动态设置form表单的元素值

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

先来看效果图如下:

动态设置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  />
<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>

 

 

 

相关文章:

  • 2021-12-06
  • 2021-12-12
  • 2021-12-09
  • 2021-11-29
  • 2021-09-29
  • 2022-12-23
  • 2022-12-23
  • 2022-01-26
猜你喜欢
  • 2021-12-05
  • 2021-08-18
  • 2022-12-23
  • 2021-11-29
  • 2021-05-24
相关资源
相似解决方案