Скрыть значение при автозаполнении JQuery из XML - PullRequest
1 голос
/ 20 июля 2011

Я работаю над автоматическим завершением JQuery из XML.

Я хочу выполнить поиск в одном узле XML без отображения значения в обратном вызове, но не могу найти решение.

Это скрипт

    <script>
$(function() {
    $.ajax({
        url: "london.xml",
        dataType: "xml",
        success: function( xmlResponse ) {
            var data = $( "geoname", xmlResponse ).map(function() {
                return {
                    value: $( "name", this ).text() + ", " +
                        ( $.trim( $( "countryName", this ).text() ) || "(unknown country)" ) + ", " +
                        $( "countryCode", this ).text() 
                        ,
                        id: $( "geonameId", this ).text()
                };
            }).get();
            $( "#birds" ).autocomplete({
                source: data,
                minLength: 0,
                select: function( event, ui ) {
                    $('#hide').val(ui.item.id)
                }
            });
        }
    });
});
</script>

Это узел xml

<geoname>
<name>London</name>
<lat>51.5084152563931</lat>
<lng>-0.125532746315002</lng>
<geonameId>2643743</geonameId>
<countryCode>GB</countryCode>
<countryName>United Kingdom</countryName>
<fcl>P</fcl>
<fcode>PPLC</fcode>
</geoname>

В данный момент, если я наберу "Королевство" и нажму на результат, поле ввода заполнитсяс "Лондон, Великобритания, Великобритания".Что я хочу, так это искать в countryName, не показывая его в предложении и в поле ввода.Поэтому я набираю «Великобритания» и вижу «Лондон, ГБ» внутри предложения и в качестве значения в поле ввода после выбора.

Возможно ли это?

1 Ответ

0 голосов
/ 20 июля 2011

Конечно, добавьте метку к вашему возвращению:

label: $( "name", this ).text() + ", " + $( "countryCode", this ).text() 

Тогда ваш сценарий станет:

<script>
    $(function() {
        $.ajax({
            url: "london.xml",
            dataType: "xml",
            success: function( xmlResponse ) {
                var data = $( "geoname", xmlResponse ).map(function() {
                    return {
                        value: $( "name", this ).text() + ", " +
                            ( $.trim( $( "countryName", this ).text() ) ||
                            "(unknown country)" ) + ", " +
                            $( "countryCode", this ).text(),
                        label: $("name", this).text() + ", " +
                            $("countryCode", this).text(),
                        id: $( "geonameId", this ).text()
                };
            }).get();
            $( "#birds" ).autocomplete({
                source: data,
                minLength: 0,
                select: function( event, ui ) {
                    $('#hide').val(ui.item.id)
                }
            });
        }
    });
});

...