关于ajax接受数据后回调内容给表单

  因为碰到列表页和修改页的内容在一个jsp页面,所以想到用ajax来异步接受数据,返回对象给修改页内容。

但碰到了点问题,比如如何很好的把传过来的对象直接赋值到相应的表单控件位置?

直接放代码:

调用的ajax方法:
function updateAdmin(id){ alert(id); $.post(
"/Meal_System/back/updateAdmin/"+id, function(data) { alert(data); $("#updateForm").formEdit(data.admin,data.adminRoleList); } ,"json") };

 

这段代码可以默认的让传递过来的值赋给控件。【但没有包括select下拉框】

$.fn.formEdit = function(data1,data2){
    return this.each(function(){
        var input, name;
        if(data1 == null){this.reset(); return; }
        for(var i = 0; i < this.length; i++){  
            input = this.elements[i];
            //checkbox的name可能是name[]数组形式
            name = (input.type == "checkbox")? input.name.replace(/(.+)\[\]$/, "$1") : input.name;
            if(data1[name] == undefined) continue;
            switch(input.type){
                case "checkbox":
                    if(data1[name] == ""){
                        input.checked = false;
                    }else{
                        //数组查找元素
                        if(data1[name].indexOf(input.value) > -1){
                            input.checked = true;
                        }else{
                            input.checked = false;
                        }
                    }
                break;
                case "radio":
                    if(data1[name] == ""){
                        input.checked = false;
                    }else if(input.value == data1[name]){
                        input.checked = true;
                    }
                break;
                case "button": break;
                default: input.value = data1[name];
            }
            
        }
       
       
    });
//给下拉框赋默认值
for(var i=0; i< data2.length;i++){ $("#selectRole").append("<option"+ <c:if test='data1.fkRoleId == data2.role_id'>selected='selected'</c:if>+">"+data2[i].role_name+"</option>"); } };
这段代码与上面那个for循环添加option效果是一样的 //$.fn.formEdit2
= function(data2){ // return $(data2).each(function(i){ // $("#selectRole").append("<option>"+this.role_name+"</option>"); // }); //};

但下拉框自己一直没解决好,现在这样写会 每次点击都添加一遍下拉框的值,而且不能一开始selected你的默认值。【不知怎么解决:上面那个

"<option"+ <c:if test='data1.fkRoleId == data2.role_id'>selected='selected'</c:if>+">"+data2[i].role_name+"</option>"不知怎么拼接解决】

posted @ 2018-04-05 14:58  苏子子木  阅读(951)  评论(0编辑  收藏  举报