【问题标题】:jquery populate multi-checkbox from xml filejquery从xml文件填充多复选框
【发布时间】:2010-06-01 18:15:10
【问题描述】:

我必须从带有 jquery 的 post 函数的 XML 文件中获取的数据填充表单中的多复选框?

<input type="checkbox" name="mercato[]" id="mkt_0" value="A">A<input type="checkbox" name="mercato[]" id="mkt_1" value="B">B

提前致谢。 再见 h

【问题讨论】:

  • 您能告诉我们您编写的 JavaScript 代码吗?谢谢。
  • 从您下面的评论中,听起来您不确定如何使用 jQuery 检查复选框。对吗?

标签: jquery xml checkbox


【解决方案1】:

这是一个获取 XML 并通过 jQuery 解析它的示例:

$.ajax({
        type: "POST",
        url: "some.xml",
        dataType: "xml",
        success: function(xml) {
            var node = $(xml).find('node');
            var attribute = $(xml).find('node').attr("attribute");
        //TODO: do something with data
    }
    });

您可能还想使用 $.each() 来遍历元素集合。

编辑:假设返回的 XML 如下所示,以下是创建一些复选框的方法:

<?xml version="1.0"?>
<RootElement>
    <CheckBox name="checkbox1">checked</CheckBox>
    <CheckBox name="checkbox1">checked</CheckBox>
    <CheckBox name="checkbox1"></CheckBox>
    <CheckBox name="checkbox1"></CheckBox>
    <CheckBox name="checkbox1">checked</CheckBox>
</RootElement>

js 看起来像这样:

$(xml).find('CheckBox').each(function(){
        var value = $(this).text(); // get the value
        var name = $(this).attr("name"); //get the name attribute
        $("#parent_div").append( //append to some parent container
                $("<input/>") // a new input element
                    .attr("type", "checkbox") //of type checkbox
                    .attr("name", name) // with given name
                    .attr("checked", value) // checked="checked" or checked=""
        )
    });

【讨论】:

  • 我知道解析 XML 以获取输入文本单选的数据并选择但不是复选框:-(
  • 感谢您回答 mcm69 但我无法附加数据我已经有一个表格我只是将检查设置为正确的复选框并保持未选中另一个再次感谢 ciao h。
【解决方案2】:

感谢您的帮助,我得到了解决方案!

这是我的工作脚本:

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 "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);                                   }
                            }); 

                        break;
                        case "select-one" :
                            $(elements[i]).append("<option selected>"+$(nome ,xml).text()+"</option>");
                        break;
                    }

                    $("#scheda_ris").append(id+" "+tipo+" "+nome+" "+val+"<br>"); //that's just for debug
                });

如果你有建议让它更优雅,我会很高兴 再次感谢

ciao h.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 2022-01-02
    • 2011-11-07
    • 2012-03-21
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多