在我的Drupal 7网站上,有一个使用Views构建的产品概述页面。在该页面上,我有许多复选框可以按任何顺序单击。对于每个单击的复选框,将一个相应的标签复制到输入文本字段中。然后,此文本字段用作jQuery Quicksearch插件的搜索字段。 (我从here借用了这个想法,但是我使用了deuxhuithuit的新插件版本。)
由于可以以任何顺序单击这些复选框,因此将以任何顺序添加搜索字段中的标签。
然后我有大量包含产品的div,其中每个产品都有一个标签文本字段,根据产品的特性,可以在其中输入多个标签术语,仅用空格隔开。
是否有任何方法可以通过prepareQuery和/或testQuery选项使Quicksearch插件以任何顺序接受这些条款?如果是这样,怎么做?我花了很多时间试图找到如何做到这一点的例子。
如果这是不可能的,我想唯一的选择就是构建一个函数,该函数将在搜索字段中以固定的顺序对标签进行排序,然后始终以正确的顺序为每种产品输入标签术语。 ..
无论如何,现在的设置是这样的:
$('#searchfield').quicksearch('.views-column .views-field-field-soktaggar', {
'delay': 100,
'selector': 'div.searchtags',
'loader': 'span.loading',
'noResults': '#noresults',
'bind': 'keyup',
'show': function () {
$(this).parent('.views-column').removeClass('hide');
$(this).parent('.views-column').addClass('show');
},
'hide': function () {
$(this).parent('.views-column').removeClass('show');
$(this).parent('.views-column').addClass('hide');
},
'prepareQuery': function (val) {
return new RegExp(val, "i");
},
'testQuery': function (query, txt, _row) {
console.log('query: ' + query + ' txt: ' + txt + ' _row: ' + _row);
return query.test(txt);
}
});
答案 0 :(得分:0)
最后,我自己想出了一个解决方案。诀窍是按照与每种产品的标签说明相同的顺序对查询进行排序。为此,我使用了带有引用数组的排序功能(标签也必须以此顺序在每个产品的标签字段中输入)。
下一个问题是,仅当匹配标签彼此相邻时才找到匹配项。例如,如果产品的标签字符串为1 second
,而查询为import subprocess
cmd = "mpstat 1 2 | grep Average | awk '{print $NF}'"
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
out, err = p.communicate()
idle = float(out.strip())
print(100-idle)
,则不可能匹配。因此,在这种情况下,必须从标签字符串中删除标签infrared logger ntc
。
现在这是完整的工作功能:
infrared ntc