Не знаю как сделать его лучше (делаю такой блок впервые): две кнопки - и + и span между ними. Через jQuery по клику на кнопки изменять значения в span-е, а по клику на "В корзину" брать значение из span-а через .text()?
Предлагаю заменить на input number и скрыть стрелки (тут недавно был вопрос как это делается). Тогда на смартфонах/планшетах при фокусе на это поле будет вылезать клавиатура с цифрами, а не обычная, с буквами.
Ankhena W: input number имеет одну проблему - при валидации формы пустое значение расценивается как :invalid. Лучше использовать input text с аттрибутом pattern и регулярным выражением типа [0-9]+
В этом случае клавиатура на мобильных также будет цифровая открываться.
Ankhena W: по сути есть только один кроссбраузерный способ валидации - через джаваскрипт. Способ через html не работает в ios safari. Можно выставить начальное значение конечно, но пользователь может его удалить. Лично я намучался с этим input number и забил на него до лучших времен.
Ankhena W: не, там валидация через html не обращает внимание на аттрибут required. А если есть специальные стили для неправильно заполненных полей (например красный бордер у инпута), то этот стиль будет применяться когда поле просто пустое. Если задать ему начальное значение, то это может сработать, но мне нужно было универсальное решение, поэтому отказался от number вообще.