jquery-ajax有助于改善功能

时间:2010-12-08 13:03:18

标签: jquery ajax

我创建了以下函数来填充表单页面的字段,有多种方法可以在一个页面中多次使用它吗?

function scorriDati(xml)
{
    var forma=$("form");
    var elements=$("*", forma);
$.each(elements,function(i){
    var id = $(elements[i]).attr("id");
    var tipo = $(elements[i]).attr("type");
    var nome=$(elements[i]).attr("name");
    var val=$(elements[i]).attr("value");
    switch (tipo)
    {
        case "text" :
            $(elements[i]).val($(id, xml).text());
        break;
        case "hidden" :
            $(elements[i]).val($(id, xml).text());
        break;
        case "textarea" :
            $(elements[i]).append($(id, xml).text());
        break;
        case "radio":
            $("input:radio[name='"+nome+"'][value='"+ $(nome, xml).text() +"']").attr('checked', true);
        break;
        case "checkbox":
            $(xml).find(nome).each(function(){ 
            var value =$(this).text();
            if (val==value)
            {
                    $("#"+id).attr("checked", value); // checked="checked" or checked="" 
                }
            }); 

        break;
        case "select-one" :
            var lung = $(xml).find(nome).length;
            if(lung==1)
            {
                $(xml).find(nome).each(function()
                {
                    if (($(this).find("optionValue").text() != "") && ($(this).find("optionDisplay").text() !=""))
                    {
                        $(elements[i]).append("<option value='"+$(this).find("optionValue").text()+"' selected>"+$(this).find("optionDisplay").text()+"</option><br>\n");
                    }
                else
                    {
                        var value =$(this).text();
                        $(elements[i]).append("<option value='"+value+"' selected>"+value+"</option>");
                    }
                });
            }
            else
            {
                $(xml).find(nome).each(function()
                {
                    $(elements[i]).append("<option value='"+$(this).find("optionValue").text()+"'>"+$(this).find("optionDisplay").text()+"</option><br>\n");
                });
            }
        break;
        case "select-multiple" :
            $(xml).find(nome).each(function(){
            var value =$(this).text();
                $("#"+id).append("<option>"+value+"</option>");
            });
        break;

    }
});
 }

我以这种方式使用这个功能:

$("#div_cont").load("./schemi/sch_anag.php");
        $.post("./php/cliente.php",
            {azione:"vedi", contratto:contratto},
            function(xml)
            {
                scorriDati(xml);
                $("#div_cont").append("<div style='clear:both'><div class='bt' id='del_"+contratto+"'>elimina</div> <div class='bt' id='mod_"+contratto+"'>VALIDA</div></div>");
            },
            "xml"
        );

2 个答案:

答案 0 :(得分:1)

只需使用以下命令定义函数:

function scorriDati(xml, formId) {
  var forma = $('#' + formId);
  //...

...并给每个表单一个id。

答案 1 :(得分:1)

如果您的XML包含表单元素的所有ID,则代码应按原样运行。

另一件事:出于性能原因,您应该将$(elements[i])$(id, xml)存储在变量中。