2010-12-08 7 views
0

フォームページのフィールドを埋める次の関数を作成しましたが、複数のフォームで1ページで数回使用する方法がありますか?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" 
     ); 

答えて

1

ジャストで関数を定義:

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

...と、各フォームにIDを与えます。

+0

sje397さんにお返事ありがとうございます。フォーム要素のようなdivを埋め込むために私の関数に可能性を追加する方法があるとお考えですか?前もって感謝します! – haltman

+0

@haltman:はい。 XMLデータに一致するIDを持つ複数の内部divでdivを設定すると、非常によく似たことが起こります。唯一の違いは、div要素には 'type'がなく、入力要素で使用される 'val'メソッドの代わりにJQueryの' text'メソッドを使用してコンテンツを設定する点です。 – sje397

+0

ありがとうsje397良い提案私は今それを試してみましょう! ;) – haltman

1

XMLにフォーム要素のすべてのIDが含まれている場合、コードはそのまま動作するはずです。

もう1つ:パフォーマンス上の理由から、$(elements[i])$(id, xml)を変数に格納する必要があります。

+0

ありがとうございましたchiborg良い提案私はそれをやろう! – haltman

関連する問題