0

我正在尝试使用 jQuery 解析和搜索我的 json 文件,我能够解析 json 文件但不能搜索它。

我的 HTML

<ol id="results"></ol>

我的 jQuery

$(document).ready(function() {
    $.getJSON('myJson.json', function(data) {
        $.each(data, function(i, item) {
            $('<li />').html(item.name + '<br>' + item.details + '<br>').appendTo('#results');
        }
    });
});​

上面的代码返回所有项目,但是我现在希望允许用户搜索 json 文件,所以我包含一个表单输入并创建一个 onclick 事件并将输入传递给搜索,请参见下面的链接。

问题是输入变量没有被传递给搜索?请帮忙。

http://jsfiddle.net/xpTk5/7/


更新:将变量传递给正则表达式似乎是问题所在。


解决了:if (item.name.search(new RegExp(q, "i")) != -1){

感谢您的尝试,很抱歉浪费您的时间。

4

2 回答 2

1

表单提交后需要获取文本框的值。在你拥有它的地方,它永远不会被设置,因为它在文档准备好时(并且可能在输入任何内容之前)获取值。

$(document).ready(function() {
    $('#submit').click(function() {
        var q = $('#query').val();
        $.getJSON('myJson.json', function(data) {
            // iterator
            $.each(data, function(i, item) {
                // search the results using regular expression for the query
                if (item.name.search(new RegExp(/''+q+''/i)) != -1) {
                    $('<li />').html(item.name + '<br>' + item.details + '<br>').appendTo('#results');
                }
            });
        });
    });
});
于 2012-10-31T16:42:51.660 回答
0

正则表达式正在读取该变量。

$('#submit').click(function() {
    var q = $('#query').val();
    $.getJSON('myJson.json', function(data) {
        // iterator
        $.each(data, function(i, item) {
            // search the results using regular expression for the query
            if (item.name.search(new RegExp(q, "i")) != -1) {
                $('<li />').html(item.name + '<br>' + item.details + '<br>').appendTo('#results');
            }
        });
    });
});

http://jsfiddle.net/xpTk5/8/

于 2012-11-01T11:12:41.777 回答