jquery和json表单操作(一)

在一个项目中,我们经常要编辑数据,通常是将要编辑的数据设置到一个表单中,对于小量的数据倒是可以每一个的去给它赋值,但如果是一个对象,数据字段很多的情况下,该怎么办呢,重复的代码经常会让人觉得很反感,维护起来也很恶心。在这里我使用jquery把json数据重置表单,只要一行代码就搞定。当然也可能会有些bug,具体我还没有去认真测试,算是一种解决办法吧,供大家参考.

html:

<form name="dome-form" id="dome-form">

  <input type="text" name="id"/>

  <input type="text" name="name"/>

  <input type="radio" name="sex" value="男"/><input type="radio" name="sex" value="女"/>

  <select name="age"><option value="18">18</option><option value="19">19</option><option value="20">20</option></select>

</form>

javascript:

<script>

//jquery 插件对象
/**
 * 重置表单
 * @param {Object} o
 * @memberOf {TypeName}
 * @return {TypeName}
 * @author jt.tao QQ:1453566283
 */
$.fn.resetObjectForm = function(o){
    if(o==null){
        var form=document.forms[$(this).attr('name')];
        if(form!==undefined){
            form.reset();
            return true;
        }else{
            alert("重置表单名为"+$(this).attr('name')+"失败.");
            return false;
        }
    }
    var $this=this;
    var a = $this.serializeArray();
    $.each(a, function(i,n) {
        var $t=$('(input|textarea|select)[name=\''+this.name+'\']',$this);
        if($t.attr("type")=='radio'){
            $.each($t, function(i,n) {
                if($(this).val()==o[this.name]) {
                    $(this).attr("checked",true);
                }else{
                    $(this).attr("checked",false);
                }
            });
        }else{
            if (o[this.name]) {
                   $t.val(o[this.name].valueOf());
            } else {
                $t.val("");
            }
        }
    });
};

//数据

var o={id:'1000',name:'JTtao',sex:'男',age:21};

//调用

$("#dome-form").resetObjectForm(o);

</script>

大家可以试一试,我觉得蛮好用的,特别是使用jquery实现mvc模式时可以帮我们减少很多没必要的代码,当然这里也有一定的局限性,具体使用是否方便还得看情况啦。

嘻嘻,

下一章我将为大家介绍其他的方法,欢迎大家给我留言。共同探讨技术.

posted @ 2011-07-25 13:30  天使鸟  阅读(1650)  评论(1编辑  收藏  举报