Проверьте, является ли ввод числовым или буквенным javascript
Я использую формы в HTML и javascript. Я бы хотел, чтобы предупреждение появлялось только в том случае, если пользователь вводит LETTER и нажимает submit
.
Итак, у меня есть код HTML:
<form name="myForm" action="" onsubmit="return checkInp()" method="post">
First name: <input type="text" name="age">
<input type="submit" value="Submit">
И код javascript:
function checkInp()
{
var x=document.forms["myForm"]["age"].value;
if (x consists of any letters) // this is the code I need to change
{
alert("Must input numbers");
return false;
}
}
Ответы
Ответ 1
Вы можете использовать функцию isNaN, чтобы определить, не преобразуется ли значение в число. Пример, как показано ниже:
function checkInp()
{
var x=document.forms["myForm"]["age"].value;
if (isNaN(x))
{
alert("Must input numbers");
return false;
}
}
Ответ 2
Используйте регулярное выражение, чтобы соответствовать только буквы. Также полезно иметь знания о том, что если вам когда-нибудь понадобится сделать что-то более сложное, например, убедиться, что это определенное количество цифр.
function checkInp()
{
var x=document.forms["myForm"]["age"].value;
var regex=/^[a-zA-Z]+$/;
if (!x.match(regex))
{
alert("Must input string");
return false;
}
}
Еще лучше было бы отрицать что-либо кроме чисел:
function checkInp()
{
var x=document.forms["myForm"]["age"].value;
var regex=/^[0-9]+$/;
if (x.match(regex))
{
alert("Must input numbers");
return false;
}
}
Ответ 3
Вы можете использовать функцию isNaN. Он возвращает true, если данные не являются числом. Это было бы примерно так:
function checkInp()
{
var x=document.forms["myForm"]["age"].value;
if (isNaN(x)) // this is the code I need to change
{
alert("Must input numbers");
return false;
}
}
Примечание: isNan считает 10.2 действительным числом.
Ответ 4
вы можете использовать isNaN(). он возвращает true, когда данные не являются цифрами.
var data = 'hello there';
if(isNaN(data)){
alert("it is not number");
}else {
alert("its a valid number");
}
Ответ 5
Попробуйте следующее:
if(parseInt("0"+x, 10) > 0){/* x is integer */}
Ответ 6
Просто найдите остаток, разделив на 1, то есть x% 1. Если остаток равен 0, это означает, что x является целым числом. В противном случае вы должны отобразить сообщение "Должны вводить номера". Это будет работать даже в случае строк, десятичных чисел и т.д.
function checkInp()
{
var x = document.forms["myForm"]["age"].value;
if ((x%1) != 0)
{
alert("Must input numbers");
return false;
}
}
Ответ 7
Лучший (безошибочный) код будет выглядеть следующим образом:
function isReallyNumber(data) {
return typeof data === 'number' && !isNaN(data);
}
Это также будет обрабатывать пустые строки. Другая причина, isNaN("12")
равна false
, но "12"
- это строка, а не число, поэтому это должно привести к true
. Наконец, бонус-ссылка, которая может вас заинтересовать.
Ответ 8
function isNumber(data){
data = data +"e1"; // Disallow eng. notation "10e2"+"e1" is NaN
var clean = parseFloat(data,10) / data ; // 1 if parsed cleanly
return ( data==0 || clean && (data/data) === 1.0); // Checks for NaN
}
function isInteger(data){
data = data +"e1"; // Disallow eng. notation "10e2"+"e1" is NaN
var clean = parseInt(data,10) / data ; // 1 if parsed cleanly
return (data==0 ||clean && (data%1) === 0); // Checks For integer and NaN
}
//Expected pass
console.log(isNumber("0"))
console.log(isNumber("-0.0"))
console.log(isNumber("+0.0"))
console.log(isNumber(0))
console.log(isNumber(-0.0))
console.log(isNumber(+0.0))
console.log(isNumber(1))
console.log(isNumber(-10.0))
console.log(isNumber(+1000.000001))
console.log(isNumber(1))
console.log(isNumber(-10.0))
console.log(isNumber(+1000.000001))
//Expected fail
console.log(isNumber("FF"))
console.log(isNumber("1e1"))
console.log(isNumber("seven"))
Ответ 9
Я знаю, что этот пост старый, но это был первый, который появился, когда я сделал поиск. Я попробовал @Kim Kling RegExp, но он потерпел неудачу. Также перед тем, как найти этот форум, я попробовал почти все остальные варианты, перечисленные здесь. В конце концов, никто из них не работал, кроме той, которую я создал; он отлично работает, плюс это es6:
let regex = new RegExp(/[^0-9]/, 'g');
let x = document.forms["myForm"]["age"].value;
if (x.match(regex)) {
alert("Must be a valid number");
return
}
Ответ 10
Я думаю, что проще всего создать объект Number
со строкой и проверить, с помощью isInteger
функции, предоставленной самим классом Number
.
Number.isInteger(Number('1')) //true
Number.isInteger(Number('1 mango')) //false
Number.isInteger(Number(1)) //true
Number.isInteger(Number(1.9)) //false
Ответ 11
Лучший и современный способ это typeof (переменная), если вы заботитесь о действительном числе, а не числе из строки. Например:
var a = 1;
var b = '1';
typeof a: // Output: "number"
typeof b: // Output: "string