jQuery的阿贾克斯有助于提高功能 [英] jquery-ajax help to improve function

查看:102
本文介绍了jQuery的阿贾克斯有助于提高功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了下面的函数来填充表单页面的领域,有一种方法可以有多种的形式使用几个时间在一个页面上?

 函数scorriDati(XML)
{
    VAR备考= $(形式);
    VAR元素= $(*,算);
$每个(元素,功能(我){
    VAR ID = $(元素[I])ATTR(ID)。
    VAR TIPO = $(元素[I])ATTR(类型)。
    VAR诺姆= $(元素[I])ATTR(名)。
    VAR VAL = $(元素[I])ATTR(价值)。
    开关(TIPO)
    {
        案文:
            $(元素[I])VAL($(ID,XML)的.text())。
        打破;
        案隐藏:
            $(元素[I])VAL($(ID,XML)的.text())。
        打破;
        案文本区域:
            $(元素[I])追加($(ID,XML)的.text());
        打破;
        案广播:
            $(输入:广播[名称='+诺姆+'] [值='+ $(诺姆,XML)的.text()+'])ATTR('检查',真正的);
        打破;
        案复选框:
            $(XM​​L).find(诺姆)。每个(函数(){
            VAR值= $(本)的.text();
            如果(VAL ==值)
            {
                    $(#+ id)的.attr(选中,值); //检查=检查或签=
                }
            });

        打破;
        案选一:
            VAR肺= $(XML).find(诺姆).length;
            如果(肺== 1)
            {
                $(XM​​L).find(诺姆)。每个(函数()
                {
                    如果(!($(本).find(optionValue)文本()=)及及($(本).find(optionDisplay)文本()=!))
                    {
                        $(元素[I])追加(<期权价值='+ $(本).find(optionValue)文本()+。选择>+ $(本).find(optionDisplay )的.text()+< /选项>< BR> \ N);
                    }
                其他
                    {
                        VAR值= $(本)的.text();
                        $(元素[I])追加(<期权价值='+价值+'选择>+价值+< /选项>中);
                    }
                });
            }
            其他
            {
                $(XM​​L).find(诺姆)。每个(函数()
                {
                    $(元素[I])追加(&LT;选项value='"+$(this).find("optionValue").text()+"'>"+$(this).find("optionDisplay").text()+"</option><br>\n");
                });
            }
        打破;
        案选择海报:
            $(XM​​L).find(诺姆)。每个(函数(){
            VAR值= $(本)的.text();
                $(#+ id)的.append(&LT;选项&gt;中+价值+&LT; /选项&gt;中);
            });
        打破;

    }
});
 }
 

我用这种方式这个功能:

  $(#div_cont)的负载(./ schemi / sch_anag.php)。
        $。员额(./ PHP / cliente.php
            {动作类:韦迪,contratto:contratto},
            功能(XML)
            {
                scorriDati(XML);
                $(#div_cont)追加(&LT;股利风格=明确:既&GT;&LT; D​​IV CLASS ='BT'ID ='德尔_+ contratto +'&GT; elimina&LT; / DIV&GT;&LT; D​​IV类='BT'ID ='模_+ contratto +'&GT; VALIDA&LT; / DIV&GT;&LT; / DIV&gt;中);
            },
            XML
        );
 

解决方案

刚刚与定义函数:

 函数scorriDati(XML,formId){
  VAR备考= $('#'+ formId);
  // ...
 

...并给每个窗体一个id。

I have created following function to fill field of a form page, there is a way to use it several time in one page with multiple form?

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;

    }
});
 }

I use this function in this way:

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

解决方案

Just define the function with:

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

... and give each form an id.

这篇关于jQuery的阿贾克斯有助于提高功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆