it-swarm.com.de

Prüfen Sie, ob die Eingabe ein Zahlen- oder Buchstaben-Javascript ist

Ich verwende Formulare in HTML und Javascript. Ich möchte, dass eine Warnung nur angezeigt wird, wenn der Benutzer einenLETTEReingibt und auf submit klickt.

Ich habe also den HTML-Code:

<form name="myForm" action="" onsubmit="return checkInp()" method="post">
    First name: <input type="text" name="age">
<input type="submit" value="Submit">   

Und der Javascript-Code:

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;
}
}
57
Greg Peckory

Mit der Funktion isNaN können Sie feststellen, ob ein Wert nicht in eine Zahl konvertiert wird. Beispiel wie folgt:

function checkInp()
{
  var x=document.forms["myForm"]["age"].value;
  if (isNaN(x)) 
  {
    alert("Must input numbers");
    return false;
  }
}
96
Bat_Programmer

Verwenden Sie Regular Expression , um nur Buchstaben zu finden. Es ist auch gut, Wissen zu haben, wenn Sie etwas komplizierteres machen müssen, wie zum Beispiel eine bestimmte Anzahl von Zahlen.

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    var regex=/^[a-zA-Z]+$/;
    if (!x.match(regex))
    {
        alert("Must input string");
        return false;
    }
}

Noch besser wäre es, etwas anderes als Zahlen abzulehnen:

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    var regex=/^[0-9]+$/;
    if (x.match(regex))
    {
        alert("Must input numbers");
        return false;
    }
}
23
Kim Kling

Sie können die Funktion isNaN verwenden. Es gibt true zurück, wenn die Daten keine Zahl sind. Das wäre so etwas:

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;
    }
}

Hinweis: isNan berücksichtigt 10.2 als gültige Zahl.

9
mael

sie können isNaN () verwenden. es gibt wahr zurück, wenn Daten nicht Zahl sind.

var data = 'hello there';
if(isNaN(data)){
  alert("it is not number");
}else {
  alert("its a valid number");
}
4
Deepak Gangore

Versuche dies:

if(parseInt("0"+x, 10) > 0){/* x is integer */}
3
Masoud Nazari

Finden Sie einfach den Rest, indem Sie durch 1 dividieren, das heißt x% 1. Wenn der Rest 0 ist, bedeutet dies, dass x eine ganze Zahl ist. Andernfalls müssen Sie die Meldung "Muss Zahlen eingeben" anzeigen. Dies funktioniert auch bei Strings, Dezimalzahlen usw.

function checkInp()
{
    var x = document.forms["myForm"]["age"].value;
    if ((x%1) != 0) 
    {
        alert("Must input numbers");
        return false;
    }
}
3
Crypters
function isNumber(data){
    data = data +"e1";                      // Disallow eng. notation "10e2"+"e1" is NaN
    var clean = parseFloat(data,10) / data ; // 1 if parsed cleanly
    return (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 (clean && (data%1) === 0);          // Checks For integer and NaN
}
1
visibleman

Ein besserer (fehlerfreier) Code wäre wie folgt:

function isReallyNumber(data) {
    return typeof data === 'number' && !isNaN(data);
}

Dies behandelt auch leere Zeichenfolgen. Ein weiterer Grund, isNaN("12"), ist gleich false, aber "12" ist eine Zeichenfolge und keine Zahl, daher sollte true ergeben. Zum Schluss noch ein Bonuslink der Sie interessieren könnte.

1
Ram Patra

Ich weiß, dass dieser Beitrag alt ist, aber es war der erste, der bei meiner Suche auftauchte. Ich habe @Kim Kling RegExp ausprobiert, aber es ist kläglich gescheitert. Bevor ich dieses Forum gefunden hatte, hatte ich fast alle anderen hier aufgeführten Varianten ausprobiert. Am Ende arbeitete keiner von ihnen außer diesem, den ich schuf; es funktioniert gut, und es ist 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
    }
1
str8up7od

Der beste und modernste Weg ist typeof (variabel), wenn Sie sich für die reelle Zahl und nicht für die Zahl aus dem String interessieren. Zum Beispiel:

var a = 1;
var b = '1';

typeof a: // Output: "number"
typeof b: // Output: "string
0
user8621657

Ich denke, am einfachsten wäre es, ein Number-Objekt mit der Zeichenfolge zu erstellen und mit Hilfe der isInteger-Funktion zu überprüfen, die von der Number-Klasse selbst bereitgestellt wird.

Number.isInteger(Number('1')) //true
Number.isInteger(Number('1 mango')) //false
Number.isInteger(Number(1)) //true
Number.isInteger(Number(1.9)) //false
0
Vikas Bansal