我正在尝试为我的网站创建一个搜索框,其中包含XML格式的数据。
如何在xml对象的所有“ v”节点中进行搜索,并返回与搜索字符串至少具有一个匹配项的所有“ v”节点?
换句话说,如果用户在文本输入字段中输入“ coffee”,我想返回其中包含“ coffee”一词的每个节点的内容。
这是我微不足道的尝试:
<b n="myBook">
<c n="1">
<v n="1">I contain the word coffee.</v>
<v n="2">I only have tea.</v>
</c>
</b>
<b n="myBook2">
<c n="1">
<v n="1">I too contain the word coffee.</v>
<v n="2">I too only have tea.</v>
</c>
<c n="2">
<v n="1">I'm afraid I too contain the word coffee.</v>
<v n="2">I'm happy to say I too only have tea.</v>
</c>
</b>
function handleSearch() {
var inputValue = $('.searchField').val();
//handle search
var searchResult = $(myxml).find('v').filter(function() { return $(this).text() == inputValue });
console.log(searchResult);
//would like to append the results to a div while wrapping them in paragraph tags
}
});
$('.searchField').change(function() {
handleSearch();
});
<input type="text" class="searchField" size="30" placeholder="Search..">
<button type="submit">
<img class="submitSearch" src="search.png">
</button>
答案 0 :(得分:0)
由于您想要文本包含“包含”一定值的节点,因此您可能需要更改过滤器功能以检查以下内容:
$(this).text().toLowerCase().indexOf(inputValue) > -1
如果您希望搜索不区分大小写,则还可以将节点文本和搜索inputValue都更改为小写。
var inputValue = $('.searchField').val().toLowerCase();