отфильтровать результат визуализации сетки из значения selectbox в jquery - PullRequest
0 голосов
/ 03 октября 2018

ОБНОВЛЕНИЕ: мой вопрос стал намного проще, я думаю.как я могу сказать:

 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>

Это поле выбора получает свои значения из файла 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) {, но я не уверен, что это такое.Заранее благодарим всех за любые советы!

1 Ответ

0 голосов
/ 03 октября 2018

РЕШИТЬ!Вся проблема лежит в renderResult (), где я пытался посмотреть, было ли значение selectbox пустым или нулевым, что было неправильно.Я должен посмотреть, было ли это 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"),

И regExp еслиScentence было так:

  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, "");
                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...