#javascript #jquery
Всем привет. Появилась такая простенькая задачка, но, почему-то не выходит её толком
закончить. Необходимо переключатель количества материалов внедрить на страницу, где
нет возможности редактировать html код. Сам выбор значений выглядит так:
(function ($) {
$('.spinner').each(function() {
var spinner = $(this),
input = spinner.find('input[type="text"]'),
btnUp = spinner.find('.up'),
btnDown = spinner.find('.down'),
// options
step = 1,
min = 1,
max = 100;
input.val(min);
btnUp.click(function(){
input.val() >= max ? $(this).prop("disabled",true) : input.val((input.val()*1)
+ step);
});
btnDown.click(function(){
input.val() <= min ? $(this).prop("disabled",true) : input.val((input.val()*1)
- step);
});
});
})(jQuery);
.spinner {
width: 100px;
height: 50px;
display: table;
margin-bottom: 30px;
}
.spinner input[type="text"] {
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
width: 50px;
text-align: center;
height: 50px;
float: left;
border: 1px solid #ccc;
border-right: none;
}
.spinner .nav {
float: left;
}
.spinner .nav .up,
.spinner .nav .down {
cursor: pointer;
border: 1px solid #ccc;
width: 25px;
height: 25px;
text-align: center;
line-height: 25px;
background-color: #ddd;
color: #333;
font-size: 20px;
}
.spinner .nav .up:hover,
.spinner .nav .down:hover {
box-shadow: inset 0px 0px 17px 0px rgba(255, 255, 255, 0.5);
}
.spinner .nav .up {
border-top-right-radius: 3px;
}
.content .container .spinner .nav .down {
border-bottom-right-radius: 3px;
}
Там же есть и пример кода с инпутами, к которым необходимо добавить кнопки + и -
. Пробовал через .append создать структуру перед выполнением функции внутри блока с
инпутами, но переключатель перестает работать. Если нужно, добавлю свой код, но, учитывая,
что он не работает, толку от этого не много. Буду благодарен за пример или хотя бы
направление мысли.
Ответы
Ответ 1
Вот готовое решение для ваших нужд: $(document).ready(function(){ inputNumberPolyfill(); }); var increaseIv = null; var increaseTm = null; function inputNumberPolyfill() { //if(Modernizr.inputtypes.number) return; $('.spinner input[type="text"]').each(function(){ var $this = $(this); var step = parseInt($this.attr('step'), 10); if(isNaN(step)) step = 1; $this.parent().append( ''+ '
Ответ 2
(function ($) { var step = 1, min = 1, max = 10; $('.spinner').each(function(i, el) { var $spinner = $(el), $nav = $spinner.find('.nav'); if(!$nav.length) { $spinner.append(''); } }); $('input').val(min); $(document).on('click', '.up', function (e) { var $this = $(e.target), $spinner = $this.closest('.spinner'), $input = $spinner.find('input'), val = $input.val(); if(val < max) { $input.val((val * 1) + step); } }); $(document).on('click', '.down',function (e) { var $this = $(e.target), $spinner = $this.closest('.spinner'), $input = $spinner.find('input'), val = $input.val(); if(val > min) { $input.val((val * 1) - step); } }); })(jQuery); .spinner { width: 100px; height: 50px; display: table; margin-bottom: 30px; } .spinner input[type="text"] { border-top-left-radius: 3px; border-bottom-left-radius: 3px; width: 50px; text-align: center; height: 50px; float: left; border: 1px solid #ccc; border-right: none; } .spinner .nav { float: left; } .spinner .nav .up, .spinner .nav .down { cursor: pointer; border: 1px solid #ccc; width: 25px; height: 25px; text-align: center; line-height: 25px; background-color: #ddd; color: #333; font-size: 20px; } .spinner .nav .up:hover, .spinner .nav .down:hover { box-shadow: inset 0px 0px 17px 0px rgba(255, 255, 255, 0.5); } .spinner .nav .up { border-top-right-radius: 3px; } .content .container .spinner .nav .down { border-bottom-right-radius: 3px; }
Комментариев нет:
Отправить комментарий