隐藏 XML 中 JQuery 自动完成的值

发布于 2024-11-25 06:49:20 字数 1501 浏览 3 评论 0原文

我正在研究 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>

目前,如果我输入“Kingdom”并单击结果,输入字段将填充“伦敦,英国,GB”。 我希望在“countryName”中进行搜索,而不在建议和输入字段中显示它。 因此,我输入“英国”,然后在建议中看到“伦敦,GB”,并在选择后在输入字段中看到值。

是否可以?

I'm working on JQuery auto complete from XML.

I wish to search in one XML node without show the value in the callback, but I'm not able to find a solution.

This is the script

    <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>

This is an xml node

<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>

At the moment, if I type "Kingdom" and click on the result, the input field fills with "London, United Kingdom, GB".
What I wish is to search in countryName wiyhout showing it inside the suggestion and in the input field.
So I type "United Kingdom" and I see "London, GB" inside the suggestion and as value in the input field once selected.

Is it possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拥醉 2024-12-02 06:49:20

当然,在您的回报中添加一个标签:

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

Sure, add a label into your return:

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

Your script then becomes:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文