У меня есть сайт электронной коммерции в Magento, потому что на странице корзины я хочу добавить + - кнопку для увеличения и уменьшения значений динамически генерируемых текстовых полей количества. У меня есть много кода, который отлично работает на localhost, но он не работает должным образом на веб-сайте
<tr>
<td>
<input type="button" class="down" value="Down" data-min="0"/>
<input type="text" class="incdec" value="0"/>
<input type="button" class="up" value="Up" data-max="5"/>
</td>
</tr>
<tr>
<td>
<input type="button" class="down" value="Down" data-min="0"/>
<input type="text" class="incdec" value="0"/>
<input type="button" class="up" value="Up" data-max="5"/>
<td>
</tr>
и вот сценарий
<script>
$(document).ready(function() {
$(".up").on('click',function(){
var $incdec = $(this).parent().find(".incdec");
if ($incdec.val() < $(this).data("max")) {
$incdec.val(parseInt($incdec.val())+1);
}
});
$(".down").on('click',function(){
var $incdec = $(this).parent().find(".incdec");
if ($incdec.val() > $(this).data("min")) {
$incdec.val(parseInt($incdec.val())-1);
}
});
});
</script>
Для пригодности я также прикрепляю скриншот для того, что я ищу.
Я потратил много времени, чтобы добиться того же, но не смог.
Не могли бы вы попробовать
$(document).ready(function() {
$(".up").on('click',function(){
var $incdec = $(this).prev();
if ($incdec.val() < $(this).data("max")) {
$incdec.val(parseInt($incdec.val())+1);
}
});
$(".down").on('click',function(){
var $incdec = $(this).next();
if ($incdec.val() > $(this).data("min")) {
$incdec.val(parseInt($incdec.val())-1);
}
});
});
Просто замените
$ (this).data("min") с $ (this).attr("data-min")
и $
(это).data("max") с $ (this).attr("data-max")
и проверить.
Также упоминается ли файл jquery как в локальном, так и в живом веб-сайте?
Также, как "denat", когда использование div внутри таблицы недействительно
если элементы не были в DOM до начала скрипта, они будут "невидимы" для этого скрипта. попробуйте установить прослушиватель с "живым" стилем - выбросьте элемент, который был в DOM, например:
<script>
$(document).ready(function() {
$(document.body).on("click", ".up", function(){
var $incdec = $(this).parent().find(".incdec");
if ($incdec.val() < $(this).data("max")) {
$incdec.val(parseInt($incdec.val())+1);
}
});
$(document.body).on("click", ".down", function(){
var $incdec = $(this).parent().find(".incdec");
if ($incdec.val() > $(this).data("min")) {
$incdec.val(parseInt($incdec.val())-1);
}
});
});
</script>
PS и alse в ответе рядом: delete "div" - это недействительно, чтобы использовать div между строками таблицы
Ваш код работает отлично - это просто, что ваш HTML недействителен.
<table>
<tr>
<td>
<input type="button" class="down" value="Down" data-min="0"/>
<input type="text" class="incdec" value="0"/>
<input type="button" class="up" value="Up" data-max="5"/>
</td>
</tr>
<tr>
<td>
<input type="button" class="down" value="Down" data-min="0"/>
<input type="text" class="incdec" value="0"/>
<input type="button" class="up" value="Up" data-max="5"/>
<td>
</tr>
</table>
<div>
между <tr>
s. Это недопустимо в таблицах HTML.
5,10,15,20...
В этом случае кнопка+1
должна быть+5
.