2016-10-12 2 views
2

Я хочу изменить шаг на входах номера HTML5 моего webapp. Я хочу 100 на 100 вместо 1 на 1.Как переопределить функцию шага ввода номера HTML5? Использование jQuery

Я попытался это:

$("#mynumberinput").keydown(function(e){ 
    if (e.keyCode == 38) // Arrow-Up 
    { 
     $(this).val(parseInt($(this).val() + 100)); 
    } 
    if (e.keyCode == 40) // Arrow-Down 
    { 
     $(this).val(parseInt($(this).val() - 100)); 
    } 
}); 

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

+0

Как насчет '<входной тип = "число" шаг = "100" ID = "mynumberinput"/>' – Hackerman

+0

"* Но [он] не работает *" Каким образом это не работает? Как это получилось «неправильно»? Были ли сообщения об ошибках? Какой у вас соответствующий HTML? –

ответ

3

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

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

Или, если вы не можете изменить HTML непосредственно, вы можете сделать это с помощью attr метода JQuery в:

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

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

$('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" />

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

+0

Ни в коем случае! 'step =" 100 "' Спасибо! Я буду отмечать как правильный ответ! – candlejack

+0

Я размышляю (и вопрос смехотворно расплывчатый), но OP * может * хотеть скорректировать введенное значение с шагом 100. Например, если вы введете '120', а затем щелкните стрелку вверх, значение изменится до '200', а не' 220'. Но, по-видимому, нет (учитывая его комментарий выше). :) –

+0

@DavidThomas хороший комментарий, но как его решить? – candlejack

1

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

$(this).val(parseInt($(this).val()) - 100); 
+0

Спасибо за информацию! +1 – candlejack

Смежные вопросы