input увелечение/уменьшение на 1

134
10 декабря 2016, 10:29

.si_form { 
	margin-top: 15px; 
    padding: 5px; 
    position: absolute; 
    width: 90px; 
    height: 20px; 
    background:#000; 
    -webkit-box-shadow: 6px 6px 18px -4px rgba(0,0,0,0.34); 
	-moz-box-shadow: 6px 6px 18px -4px rgba(0,0,0,0.34); 
	box-shadow: 6px 6px 18px -4px rgba(0,0,0,0.34); 
} 
.si_form2 { 
    width: 90px; 
    height: 30px; 
    margin-top: -6px; 
    margin-left: -6px; 
    position: absolute; 
    -webkit-box-shadow: inset 6px 6px 0px -5px rgba(255,255,255,0.27); 
-moz-box-shadow: inset 6px 6px 0px -5px rgba(255,255,255,0.27); 
box-shadow: inset 6px 6px 0px -5px rgba(255,255,255,0.27); 
} 
input[id=si_input] { 
	width: 75px; 
    position: absolute; 
    padding: 0 10px; 
    border: none; 
    background: none; 
    box-sizing: border-box; 
    color:#fff; 
    font-size:18px; 
}
<div class="si_form"> 
  <div class="si_form2"></div> 
  <input type="text" id="si_input" name="from" placeholder="От"> 
</div>

Как реализовать функцию увелечения/уменьшение значение в input на 1. При клике на стрелочки справа.

Answer 1

function setHandler(e){ 
  let input  = e.querySelector('.si_input'), 
      arrows = e.querySelector('.arrows'), 
      // Устанавливаем новое значение прибавляя новое значение 
      update = num => input.value = (parseInt(input.value, 10) || 0) + num; 
   
  if(input === null || arrows === null) 
    return; 
   
  // Навешиваем и слушаем события клика на раппер стрелочек 
  // При клике, определяем на какую стрелочку нажали просто проверяя класс 
  arrows.addEventListener('click', e => update(e.target.classList.contains('up') ? 1 : -1)); 
} 
 
document.addEventListener('DOMContentLoaded', e => { 
  // It is alive!!! 
  Array.from(document.querySelectorAll('.si_form')).forEach(e => setHandler(e)); 
});
.si_form { 
	margin-top: 15px; 
    padding: 5px; 
    position: relative; 
    width: 60px; 
    height: 20px; 
    background:#000; 
    -webkit-box-shadow: 6px 6px 18px -4px rgba(0,0,0,0.34); 
	-moz-box-shadow: 6px 6px 18px -4px rgba(0,0,0,0.34); 
	box-shadow: 6px 6px 18px -4px rgba(0,0,0,0.34); 
} 
 
.si_input{ 
	width: 50px; 
    position: absolute; 
    padding: 0 10px; 
    border: none; 
    background: none; 
    box-sizing: border-box; 
    color:#fff; 
    font-size:18px; 
} 
.si_input:focus{ 
  outline: none; 
} 
.arrows div{ 
  position: absolute; 
  width: 0; 
  height: 0; 
  border: 8px solid transparent; 
} 
.up{ 
  top: -4px; right: 5px; 
  border-bottom-color: #2c7fb3!important; 
  border-top: 0; 
} 
.up:hover{ 
  border-bottom-color: #455ab5!important; 
} 
.down{ 
  bottom: -4px; right: 5px; 
  border-top-color: #2c7fb3!important; 
  border-bottom: 0; 
} 
.down:hover{ 
  border-top-color: #455ab5!important; 
}
<div class="si_form"> 
  <input type="text" class="si_input" name="from" placeholder="От"> 
  <div class='arrows'> 
    <div class='up'></div> 
    <div class='down'></div> 
  </div> 
</div> 
<div class="si_form"> 
  <input type="text" class="si_input" name="from" placeholder="От"> 
  <div class='arrows'> 
    <div class='up'></div> 
    <div class='down'></div> 
  </div> 
</div> 
<div class="si_form"> 
  <input type="text" class="si_input" name="from" placeholder="От"> 
  <div class='arrows'> 
    <div class='up'></div> 
    <div class='down'></div> 
  </div> 
</div>

READ ALSO
Блок меню не растягивается по ширине

Блок меню не растягивается по ширине

Не получается сделать так, чтобы при уменьшении экрана блок меню и футер были по всей ширине экрана

177
Слайдер со статическим текстом owl-carousel

Слайдер со статическим текстом owl-carousel

Мне нужно сделать что-то подобное как в первом слайдере (самый верхний блок) http://wwwtemplatemonster

211
Google analytics js code

Google analytics js code

На сайте есть интеграция с Google Analytics, в таком виде я вижу её в аккаунте:

181
Как отобразить содержимое объекта

Как отобразить содержимое объекта

Есть модульное окно dijit/Dialog , в нем должено отображаться содержимое <div class="wrap-filters-table">, но вместо этого он просто пишет [object HTMLDivElement]Вопрос,...

260