jquery заполнить мульти-флажок из файла XML - PullRequest
2 голосов
/ 31 мая 2010

Мне нужно заполнить мульти-флажок в форме из данных, взятых из файла XML из функции post с помощью jquery?

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

Спасибо заранее. Чао ч

Ответы [ 2 ]

2 голосов
/ 31 мая 2010

Вот пример получения 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=""
        )
    });
0 голосов
/ 01 июня 2010

Спасибо за помощь, я получил решение!

Это мой рабочий скрипт:

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

Если у вас есть предложения, чтобы сделать его более элегантным, я буду очень счастлив Еще раз спасибо

чао ч.

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