jQuery поиск ближайшего номера - PullRequest
0 голосов
/ 04 мая 2020

Я создаю форму, в которой вы можете выбирать между различными размерами бумаги, все работает хорошо, и я создал поисковую форму в jQuery, которая просматривает текст () div для поиска подходящих форматов. Например: есть размер 105 x 148, и если я наберу "105" в #searchformat, то это будет скрывать () все остальные div без "105".

$('#searchformat').keyup(function() {
    $('.awspc-image-selection-box').hide();
    $('.awspc-image-selection-box-content .awspc-image-selection-box-content-label').each(function() {
        if($(this).text().toLowerCase().replace(/\s/g, '').indexOf(""+text+"") != -1 ) {
            $(this).closest('.awspc-image-selection-box').show();
        }
    });
});

Это прекрасно работает. Есть только одна вещь, которую я не могу заставить работать: я хочу иметь возможность, если вы введете в поле ввода, например, «104», что он также покажет div с «105». С полем + - 5.

Поле, в котором мне нужно искать, равно $('.awspc-image-selection-box-content-label').text(), и я уже пробовал его с функцией, имеющей return Math.round(x.match(/\d+/) / text) * text;, но при этом ищется ближайший номер и проблема также здесь является то, что значение поля выглядит следующим образом: <div class="awspc-image-selection-box-content-label"> 38.1 x 8 mm </div>

HTML:

<div class="awspc-image-selection-box" data-value="7" data-id="aws_price_calc_45" data-substrate="">          
    <div class="awspc-image-selection-box-content">
        <img style="width: ; height: " src="/uploads/woocommerce-placeholder-768x768.png" alt="170">
        <div class="awspc-image-selection-box-content-label">38.1 x 8 mm</div>
    </div>
</div>

Так, как я могу в примере искать «39», и он покажет мне div с "38"?

Большое спасибо!

ОБНОВЛЕНИЕ

Я понял, какой-то рабочий код, но единственная проблема сейчас заключается в том, как я могу получить значение div ближайшего () из результата ...

var tooSearchFor = $('.awspc-image-selection-box-content-label').text();
tooSearchFor   = tooSearchFor.split('\n');
for(var i = 0; i < tooSearchFor.length; i++)
tooSearchFor[i] = parseInt(tooSearchFor[i]) || 0;
var goalFormat = textInputSearch;
var closestFormat = null;
$.each(tooSearchFor, function(){
     if (closestFormat == null || Math.abs(this - goalFormat) < Math.abs(closestFormat - goalFormat)) {
     closestFormat = this;
}
});

 console.log ('Closest format:' + closestFormat); // outputs the closest found number

Как я могу получить div, в котором closestFormat найдено в массиве ...?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...