JQuery-AJAX поможет улучшить функцию - PullRequest
0 голосов
/ 08 декабря 2010

Я создал следующую функцию для заполнения поля страницы формы, есть способ использовать его несколько раз на одной странице с несколькими формами?

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 ]

1 голос
/ 08 декабря 2010

Если ваш XML содержит все идентификаторы элементов формы, ваш код должен работать как есть.

Еще одна вещь: из соображений производительности следует хранить $(elements[i]) и $(id, xml) в переменной.

1 голос
/ 08 декабря 2010

Просто определите функцию с помощью:

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

... и присвойте каждой форме идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...