#html
#HTML
Вопрос:
У меня есть поле ввода html, но данными являются только числовые данные. Как я могу обеспечить это?
Ответ №1:
Вы можете использовать HTML5 для проверки типа вашего ввода без использования JavaScript. Однако этот метод (пока) поддерживается не всеми браузерами.
<input type="number" name="quantity" min="1" max="5">
Используйте следующие атрибуты для указания ограничений (как описано здесь):
- max — указывает максимально допустимое значение
- min — указывает минимально допустимое значение
- шаг — задает допустимые интервалы между номерами
- значение — Указывает значение по умолчанию
Комментарии:
1. по-прежнему не поддерживается IE, работает как шарм в chrome. Для IE jquery os должен использоваться JS.
2. Согласно w3schools.com/tags/tag_input.asp все атрибуты (max, min и step) поддерживаются начиная с IE 10… Хотя я его не тестировал…
Ответ №2:
Вам понадобится событие для проверки, является ли введенный текст числом или нет. Смотрите пример кода
JS
function isValidChar(char){
var txt = char;
var found = false;
var validChars = "0123456789"; //List of valid characters
for(j=0;j<txt.length;j ){ //Will look through the value of text
var c = txt.charAt(j);
found = false;
for(x=0;x<validChars.length;x ){
if(c==validChars.charAt(x)){
found=true;
break;
}
}
if(!found){
//If invalid character is found remove it and return the valid character(s).
document.getElementById('txtFld').value = char.substring(0, char.length -1);
break;
}
}
}
HTML
<input type="text" id="txtFld" onKeyup="isValidChar(this.value);" />
Смотрите рабочий код здесь jsfiddle
Хотя код немного длинный, его можно свести к минимуму, если вы знаете, как использовать регулярное выражение или jquery.
Комментарии:
1. @khachick Хорошая мысль, ну, вы можете просто добавить «.» и «-» к допустимым символам. В любом случае, этот код на самом деле не предназначен для числового ввода и он не идеален. Я просто получаю это в своем коде, если проверка числовых значений является строгой. Потребуется другая проверка, например isNaN ()
2. существует проблема, когда какая-либо клавиша нажата в течение длительного времени, это приведет к обрезке только последнего символа текста.
3. @Javed Akram, ваше правильное Я не проверял это событие. В любом случае добавление дополнительных событий
onKeyPress="isValidChar(this.value);"
решит эту проблему. Спасибо за информацию, я проверю свой существующий код, чтобы исправить возможный эффект в моем приложении.
Ответ №3:
Попробуйте это, и вам решать, выбирать минимальное число и максимальное:
legend {
background-color: #000;
color: #fff;
padding: 3px 6px;
}
.output {
font: 1rem 'Fira Sans', sans-serif;
}
input,
label {
width: 43%;
}
input {
margin: 1rem 0;
}
label {
display: inline-block;
font-size: .8rem;
}
input:invalid span:after {
content: '✖';
color: #f00;
padding-left: 5px;
}
input:valid span:after {
content: '✓';
color: #26b72b;
padding-left: 5px;
}
<span class="validity"></span>
<input type="number" id="userId" name="userId"
placeholder="Min: 1, max: 10000"
min="1" max="10000" />
<span class="validity"></span>
Ответ №4:
Number () — это функция, которую вы хотите, чтобы «123a» возвращала NAN
parseInt () усекает конечные буквы «123a», возвращает 123
<input type="text" id="txtFld" onblur="if(!Number(this.value)){alert('not a number');}" />
Комментарии:
1. Вам не нужно добавлять
javascript:
псевдопротокол, это вообще не нужно, начиная с Netscape…2. 0 — это число, но появляется предупреждение.
Ответ №5:
Попробуйте этот код. работает даже при использовании ctrl v (вставить)…
<SCRIPT Language ="VBScript">
sub onlyNumber(idBox)
Set objInl = CreateObject("VBScript.RegExp")
objInl.Global = True
objInl.Pattern = "[^0-9-.]"
document.getElementById(idBox).value = objInl.Replace(document.getElementById(idBox).value, "")
set objInl = nothing
end sub
</SCRIPT>
<input type="text" id="txtFld" onKeyup="onlyNumber(this.id);" />
Ответ №6:
<input name="txtnumbersOnly" type="text" onkeypress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;">
Ответ №7:
Используйте функцию Java script в качестве средства проверки. Или вы также можете получить функции jquery.