0

我想创建一个搜索框来检查输入并查看它是否与城镇名称匹配。

我的数据是这样组织的(顺便说一句虚构的数据):

var markers = {
    towns: {
        "London": {lat: -83.68088192646843, lng: -125.270751953125},
        "Paris": {lat: -58.1548020417031, lng: -21.318115234375},
    }
}

所以澄清一下:

  • 获取文本框输入,var query
  • 搜索城镇,var results
  • if (query === results)做某事,例如发出警报

谢谢。

编辑:

我已经能够进行如下测试:

$("#search").blur(function() {
    var query = $("#search").val();
    var results = "hi";
    if (query === results) {
        alert("booyah");
    }   
})

这可行,但是正如您所见,我不知道如何将城镇存储在var results.

编辑#2:这行得通吗?

$("#search").blur(function() {
    var query = $("#search").val();
    for (var town in markers.towns) {
        if (query !== markers.towns[town]) {
            alert("booyah");
        }           
    }
})
4

2 回答 2

0

首先,您的对象不是数组。这种情况可能很简单:

var coordinates = (function () {
    var markers = {
        towns: {
            "London": {lat: -83.68088192646843, lng: -125.270751953125},
            "Paris": {lat: -58.1548020417031, lng: -21.318115234375},
        }
    };
    return {
        find = function (city) {
             markers.towns[city] || null;
        }
    };
})();

find 方法将返回您的值对象或 null。

于 2012-06-26T11:47:47.337 回答
0

当我使用硬编码的查询变量运行以下命令时,它可以正常工作:

var markers = {
    towns: {
        "London": {lat: -83.68088192646843, lng: -125.270751953125},
        "Paris": {lat: -58.1548020417031, lng: -21.318115234375}
    }
}

var query = "london";   // Test with different capitalization.
for (var town in markers.towns) {
    // If the current town name matches the input field (case insensitive)
    if (town.toLowerCase() === query.toLowerCase()) {
        alert("booyah");
    }
}
于 2012-06-26T13:58:46.053 回答