Как переопределить функцию шага ввода номера HTML5? Использование jQuery

Я хочу изменить $ ( "#mynumberinput" ). keydown ( function ( e ) { if ( e . keyCode == 38 ) // Arrow-Up { $ ( this ). val ( parseInt ( $ ( this ). val () + 100 )); } if ( e . keyCode == 40 ) // Стрелка вниз { $ ( это ). val ( parseInt ( $ ( this ). val () - 100 )); } }); на входах номера HTML5 моего webapp. Я хочу step00 на 100 вместо 1 на 1.

Я пробовал это:

<input type="number" step="100" />

Но не получилось. Как я могу это достичь?

javascript,jquery,html5,keydown,keycode,

2

Ответов: 2


3 принят

Измените attrсвойство на самом элементе:

$("#mynumberinput").attr('step', 100);

Если вы не можете напрямую изменить HTML-код, вы можете сделать это с помощью метода jQuery :$('input').on('keyup', function(e) { if (e.which === 38) this.value = +this.value + 99; else if (e.which === 40) this.value = +this.value - 99; });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" />

Кажется, что фактическая проблема заключается в том, что вы хотите разрешить пользователю вводить число, а затем увеличить или уменьшить на 100. Проблема с вашим текущим кодом заключается в том, что вы не конвертируете значения в числа и, таким образом, вы сталкиваетесь с тем, что известный как конкатенация строк . Чтобы исправить это, просто преобразуйте их в числовые значения перед увеличением или уменьшением значения:

step
1

Обратите внимание, что я использую 99 вместо 100. Это позволяет использовать начальную обработку браузером. Также, если ваше stepзначение не так 1, вам придется самостоятельно компенсировать это.


1

Я думаю, что ответ на входный шаг прав, но в отношении JQuery я думаю, что вы должны иметь parseInt только для val, а THEN - вычесть.

$(this).val(parseInt($(this).val()) - 100);
JavaScript, JQuery, html5, KeyDown, скан,
Похожие вопросы