当前位置: 首页 > 面试题库 >

在每个keyup上更新JSON,以便提前输入Twitter

须曜文
2023-03-14
问题内容

我有一个带有输入字段的html页面。每次在此字段中键入内容时,都会使用jQuery调用php脚本。

该php脚本根据输入字段返回一个JSON,其中包含特定查询的结果。

这工作正常,我将输出记录在中console

<html>
    <head>
    <script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
    <script>
        var r = jQuery(function($) {
            $('#name').keyup(function() {
                var input = $('#name').val();

                var response = $.getJSON('get_names.php', {input: input});

                response.done(function (names) {
                    console.log(names);
                });
            });
        });
    </script>

    </head>

    <body>
        <div><input id="name"></div>
    </body>
</html>

现在的问题是console,我需要将其与twitter
bootstrap合并在一起,而不是登录到typeahead.js中的第一个示例,以便states每次使用php脚本计算包含以下内容的json(在下面的代码中):场。

$(document).ready(function() {

    var substringMatcher = function(strs) {
    return function findMatches(q, cb) {
        var matches, substringRegex;

        // an array that will be populated with substring matches
        matches = [];

        // regex used to determine if a string contains the substring `q`
        substrRegex = new RegExp(q, 'i');

        // iterate through the pool of strings and for any string that
        // contains the substring `q`, add it to the `matches` array
        $.each(strs, function(i, str) {
        if (substrRegex.test(str)) {
            // the typeahead jQuery plugin expects suggestions to a
            // JavaScript object, refer to typeahead docs for more info
            matches.push({ value: str });
        }
        });

        cb(matches);
    };
    };

    var states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California',
        'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii',
        'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana',
        'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota',
        'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire',
        'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota',
        'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island',
        'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont',
        'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'
    ];

    $('#the-basics .typeahead').typeahead({
        hint: true,
        highlight: true,
        minLength: 1
    },
    {
        name: 'states',
        displayKey: 'value',
        source: substringMatcher(states)
    });
});

我一直试图以此来捕捉价值,但没有任何变化:

jQuery(function($) {
    $('#name').keyup(function() {
        var input = $('#name').val();

        names = $.getJSON('get_names.php', {input: input});

    });
});

因此:如何keyup通过到目前为止已编写的输入调用php脚本,使每次事件发生时都可以更新JSON ?


问题答案:

我最终要做的是使用Bloodhound,具体地说,replace是创建一个适当的查询:

var states = new Bloodhound({
    ...
    remote: {
            url: 'suggest.php?input=',
            replace: function (url, query) {
                    suggestion.input = query;
                    return url + suggestion.input;
            },
            ...
    }
});
states.initialize();

总之,完整的代码如下所示:

$(function(){

        var suggestion = {
                input: '',
                normalized: ''
        };
        var states = new Bloodhound({
                datumTokenizer: function (d){

                },
                queryTokenizer: Bloodhound.tokenizers.whitespace,
                remote: {
                        url: 'get_names.php?input=',
                        replace: function (url, query) {
                                suggestion.input = query;
                                return url + suggestion.input;
                        },
                        filter: function (data) {
                                return $.map(data, function(company) { return { value: company }; });
                                }
                }
        });
        states.initialize();

        $('#the-basics .typeahead').typeahead({
                minLength: 1,
                highlight: true
                },{
                displayKey: 'value',
                source: states.ttAdapter()
        });
});


 类似资料:
  • 我有mysql数据库。在我的页面上,当我点击一个按钮时,我从数据库中检索数据。所有数据都显示在页面上。我得到一行id、一行名称和一行数字(在输入字段中)。举个例子,我得到: 51 桌子 200 52 头 320 53 玻璃 456个 因为所有值编号(第3行)都在输入字段中,所以可以更改它们。我创建了提交按钮,所以我可以提交更改的值。这是我的js代码: 所以在控制台中,我得到了所有必要的字段。它们为

  • 所以我在两个函数中创建了输入,在上,它获取输入到它们中的值。但是每当我输入输入时,我只能在它不聚焦之前一次输入一个字母,我相信这是因为组件一直在渲染。我还意识到,每当我删除OnChange和value道具时,一切都会恢复正常,我可以轻松地键入一切。我该怎么解决这个问题? 一个pp.js

  • 问题内容: 我应该如何在MySQL中存储出生日期,以便可以通过Cron Job轻松地每天更新每个人的年龄? 存储“年龄”和“生日”是否有意义,以便在进行涉及“年龄”的搜索时,我不必即时计算每个“年龄”并浪费CPU资源? 如果是这样,我应该如何1)存储生日,以及2)每天计算年龄? 我可以想象每天的cron脚本会首先过滤出其生日不是当前月份的用户,然后过滤出其生日不是当前日期的用户,然后将每个剩余用户

  • 我们有一个要求,在那里问题可以缩小为。 有多个键,每个键映射到一个整数。 当在JVM上接收到一个键时,需要从共享内存中检索int值,递增它,然后将递增的值放回共享内存中。 因此,当两个JVM或两个线程读取相同的值时,其中一个的更新应该一致失败,这样您就不会丢失任何JVM上的任何线程所做的任何增量。 是否有其他技术可以很好地满足这一要求。

  • 这会将每个字典附加到“data.txt”,但它是内联的。我希望每个字典条目都是新的行。如有任何建议将不胜感激。

  • 我正在尝试用Angular构建一个简单的计算器,如果我想的话,我可以覆盖总数。我有这部分的工作,但当我回去输入一个数字在一个或两个领域的总数没有在该领域的更新。 这是我的jsfiddlehttp://jsfiddle.net/YUza7/2/ 形式 javascript