[英]filter a rendered grid result from selectbox value in jquery
更新:我认为我的问题变得更简单了。 我该怎么做才能告诉:
var query = $(":input[name=filter]").val(),
以$("select[name=PR_Type]").val(),
作为参数? 我试过这样的事情:
var query = $(":input[name=filter]").val() || $("select[name=PR_Type]").val(),
但这仅需要 $("select[name=PR_Type]").val(), 作为过滤结果...
我试图根据从选择框中选择的值过滤结果。 renderResult()
函数渲染一个包含一些标签和渲染数据的网格,它看起来像这样:
renderResult: function () {
var query = $(":input[name=filter]").val(),
querySelect = $("select[name=PR_Type]").val(),
queryRegexp = query === "" ? undefined : new RegExp(query, "i"),
console.time("productos.renderResult()");
$("#result").html("");
productos.sort();
$.each(productos.models, function (i, row) {
if (!row.transformed) {...
所以我想出了这样的事情:
$('[name=PR_Type]').on('change', function (event) {
var selection = $(this).val(), //Changed here and now I get the value
products.renderResult(selection);
});
和一个这样的选择框:
<select name="PR_Type"></select>
此选择框从连接到 servlet 的 json 文件中获取其值。 这就是我为选择框设置选项的方式:
var types = [];
for (var type in productos.productosTypes) types.push(productos.productosTypes[type] + "|" + type);
$("[name=PR_Type]").setOptions(types);
我还创建了一个函数来获取值来做这样的事情:
this.getValue("PR_Type"),
但我不知道如何实现这一点了
getValue: function (name) {
var $elemSelect = $("select[name=" + name + "]");
return $elemSelect.val() ? escape($elemSelect.val()) : "";
},
我知道我在 $('[name=PR_Type]').on('change', function (event) { 上遗漏了一些东西,但我不确定它是什么。提前感谢大家的建议!
解决了! 所有的问题都在 renderResult() 中,我试图查看选择框的值是空还是空,这是错误的。 我应该看看它是否为空或未定义,然后我不得不稍微改变一下正则表达式如果气味。 所以最后我改变了这个:
querySelect = $("select[name=PR_Type]").val(),
queryRegexp = query === "" ? undefined : new RegExp(query, "i"),
并添加了这个:
querySelectRegexp = querySelect === null ? undefined : new RegExp(querySelect, "i"),
所以现在看起来像这样:
renderResult: function () {
var query = $(":input[name=filter]").val(),
querySelect = $("select[name=PR_Type]").val(),
queryRegexp = query === "" ? undefined : new RegExp(query, "i"),
querySelectRegexp = querySelect === null ? undefined : new RegExp(querySelect, "i"),
正则表达式 if 气味是这样的:
if (querySelectRegexp !== undefined) {
if (queryRegexp !== undefined) {
if (row.name.match(queryRegexp)) {
row.classes = row.classes.replace(/hide/g, "");
} else {
if (row.classes.indexOf("hide") === -1) {
row.classes += " hide";
}
}
} else if (querySelectRegexp !== undefined) { (row.type.match(querySelectRegexp)) {
row.classes = row.classes.replace(/hide/g, "");
} else {
if (row.classes.indexOf("hide") === -1) {
row.classes += " hide";
}
}
} else {
row.classes = row.classes.replace(/hide/g, "");
}
现在它看起来像这样:
if (querySelectRegexp !== undefined) {
if (row.type.match(querySelectRegexp)) {
row.classes = row.classes.replace(/hide/g, "");
} else {
if (row.classes.indexOf("hide") === -1) {
row.classes += " hide";
}
}
}
if (queryRegexp !== undefined) {
if (row.name.match(queryRegexp)) {
row.classes = row.classes.replace(/hide/g, "");
} else {
if (row.classes.indexOf("hide") === -1) {
row.classes += " hide";
}
}
} else {
row.classes = row.classes.replace(/hide/g, "");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.