Ответ 1
Вы можете использовать jquery.numeric плагин.
См здесь аналогичный вопрос.
$(document).ready(function(){
$(".numeric").numeric();
});
Мне нужно иметь текстовое поле, где, когда набирается внутри, ТОЛЬКО разрешать номера [0-9]. Я использовал type="number"
, который определенно поддерживает проверку на стороне клиента, но также позволяет вводить другие алфавиты. Я могу сделать это, отслеживая каждое keydown и сопоставляя с регулярным выражением, но мне было интересно, есть ли какой-либо способ, которым я могу ограничиться типом, используя только теги html и НЕ определяя какие-либо функции в JavaScript для сравнения в каждом keydown?
Недопустимый код для этого:
<input type="number" id="txt_number" maxlength="70" name="txt_name" placeholder="Number">
Любая помощь приветствуется.
Вы можете использовать jquery.numeric плагин.
См здесь аналогичный вопрос.
$(document).ready(function(){
$(".numeric").numeric();
});
Попробуйте это
определить функцию javascript
для разрешенного числа с десятичной дробью, как показано ниже
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
if (charCode != 46 && charCode > 31
&& (charCode < 48 || charCode > 57))
return false;
return true;
}
Функция для разрешенного числа не десятичная, как ниже
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
if ((charCode < 48 || charCode > 57))
return false;
return true;
}
HTML
<input type="number" id="txt_number" maxlength="70" name="txt_name" placeholder="Number" onkeypress="return isNumberKey(event)">
input type = "number" для получения числовой клавиатуры на мобильном устройстве
ява Script
function numbersonly(myfield, e)
{
var key;
var keychar;
if (window.event)
key = window.event.keyCode;
else if (e)
key = e.which;
else
return true;
keychar = String.fromCharCode(key);
// control keys
if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
return true;
// numbers
else if ((("0123456789").indexOf(keychar) > -1))
return true;
// only one decimal point
else if ((keychar == "."))
{
if (myfield.value.indexOf(keychar) > -1)
return false;
}
else
return false;
}
HTML
<input type="number" onkeypress="return numbersonly(this, event)"/>
Браузеры ведут себя по-другому. В Chrome следующий код:
<input type="number" id="txt_number" maxlength="70" name="txt_name" placeholder="Number">
<input type="submit">
будет работать для вас только, если он находится в форме и только после того, как пользователь нажмет кнопку отправки.
Если вы не против использовать немного Javascript, это может помочь JS-BIN Demo:
<input type="number" onkeyup="if(!this.checkValidity()){this.value='';alert('Please enter a number')};"/>
Вам нужно будет ввести поле ввода внутри формы и с кнопкой отправки. Проверка формы происходит при представлении формы. См. Демо здесь: http://jsfiddle.net/ds345/Q4muA/1/
<form>Number:
<input type="number" name="Number" value="10">
<br>
<input type="submit" value="Submit" />
</form>
Попробуйте следующее: -
$("#txtAge").keydown(function (e) {
if(e.key=='e' || e.key=='.' || e.key=='-')
return false;
});
Я замечаю, что вопрос был опубликован около 2013 года. В любом случае, теперь type = "number" ограничивает алфавиты и специальные символы, другие, что 'e', '.' и '+' как 'e' и '.' рассматриваются как экспоненциальные числа, такие как 1.2e + 12, '.' рассматривается для десятичных чисел.