2010-12-08 7 views
0

J'ai créé la fonction suivante pour remplir le champ d'une page de formulaire, il existe un moyen de l'utiliser plusieurs fois dans une page avec plusieurs formulaire?Aide jquery-ajax pour améliorer la fonction

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; 

    } 
}); 
} 

J'utilise cette fonction ainsi:

$("#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" 
     ); 

Répondre

1

définissent simplement la fonction avec:

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

... et donner à chacun forment un id.

+0

Merci d'avoir répondu sje397 pensez-vous qu'il existe un moyen d'ajouter une possibilité dans ma fonction pour remplir un div comme un élément de formulaire? Merci d'avance! – haltman

+0

@haltman: Bien sûr. Si vous configurez un div, avec plusieurs divs internes dont l'ID correspond à vos données XML, vous pouvez faire une chose très similaire. Les seules différences seraient que les éléments div n'ont pas de 'type', et vous utiliseriez la méthode 'text' de JQuery pour définir le contenu à la place de la méthode' val' utilisée avec les éléments d'entrée. – sje397

+0

merci sje397 bonne suggestion Je vais essayer maintenant! ;) – haltman

1

Si votre code XML contient tous les ID des éléments de formulaire, votre code devrait fonctionner tel quel.

Une autre chose: Pour des raisons de performances, vous devez stocker $(elements[i]) et $(id, xml) dans une variable.

+0

Merci chiborg bonne suggestion Je le ferai! – haltman