javascript - 从 jquery 中的选择框值过滤呈现的网格结果

标签 javascript java jquery html

更新:我认为我的问题变得简单多了。我该怎么做才能告诉:

 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() 中,我试图查看选择框的值是空的还是 null,这是错误的。我应该看看它是否为 null ori undefined,然后我不得不稍微更改 regExp if scentence。所以最后我改变了这个:

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 (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, "");
                    }

关于javascript - 从 jquery 中的选择框值过滤呈现的网格结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52623074/

相关文章:

javascript - 动画、FPS 和 KineticJS

java - @Entity 无法识别@MappedSuperclass 中的@Id

javascript - 将对象传递给 for 循环

javascript - (Javascript) 如何使用 iframe 强制下载图像?

javascript - 如何增加 jQuery 变量?

javascript - 另一个 JavaScript 递归函数

javascript - 尝试读取 React js 中 API 返回的响应时出现未定义问题

javascript - react 错误 : Plugin/Preset files are not allowed to export objects, 仅功能

java - 如何在从 Maven 运行集成测试之前启动 GAE/J devserver?

java - 使用 CrudRepository 只提取某些字段?