Я создаю форму, в которой вы можете выбирать между различными размерами бумаги, все работает хорошо, и я создал поисковую форму в 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
найдено в массиве ...?