Einen ganzzahligen Wert aus einem Textfeld abrufen, wie kann man überprüfen, ob er NaN oder Null usw. ist?

StackOverflow https://stackoverflow.com/questions/793445

  •  16-09-2019
  •  | 
  •  

Frage

Ich ziehe einen Wert über JavaScript aus einem Textfeld.Wenn das Textfeld leer ist, wird es zurückgegeben NaN.Ich möchte eine leere Zeichenfolge zurückgeben, wenn sie null, leer usw. ist.

Welche Prüfung muss ich durchführen? if(NAN = tb.value)?

War es hilfreich?

Lösung

Hm, da stimmt etwas nicht.

In welchem ​​Browser gibt ein leeres Textfeld NaN zurück?Ich habe das noch nie erlebt und kann es auch nicht reproduzieren.

Der Wert eines Textfelds ist tatsächlich eine Zeichenfolge.Ein leeres Textfeld gibt eine leere Zeichenfolge zurück!

Oh, und um zu überprüfen, ob etwas NaN ist, sollten Sie Folgendes verwenden:

if (isNaN(tb.value))
{
   ...
}

Notiz:Der isNaN()-Funktion kehrt zurück true für alles, was nicht als Zahl geparst werden kann, außer für leere Zeichenfolgen.Das bedeutet, dass es eine gute Prüfung für numerische Eingaben ist (viel einfacher als reguläre Ausdrücke):

if (tb.value != "" && !isNaN(tb.value))
{
   // It's a number
   numValue = parseFloat(tb.value);
}

Andere Tipps

Sie können es auch tun, auf diese Weise:

var number = +input.value;
if (input.value === "" || number != number)
{
    // not a number
}

NaN gleich nichts, nicht einmal selbst.

Wenn Sie nicht wie + zu verwenden, von String in Zahl zu konvertieren, verwenden Sie die normale parseInt, aber denken Sie daran, immer eine Basis geben

var number = parseInt(input.value, 10)

sonst "08" wird 0, weil Javascript es ist eine Oktalzahl denkt.

Angenommen, Sie einen Verweis auf das Texteingabefeld haben:

function getInteger(input) {
  if(!input || !input.value) return "";

  var val = parseInt(input.value, 10);

  if(isNaN(val)) return "";
  else return val;
}

Eine Sache, die Sie tun können, ist ein regulärer Ausdruck Kontrolle über den Wert der Textbox und stellen Sie sicher, es passt das Format einer akzeptierten Nummer, und dann, wenn es das Format durchführen Ihren Prozess passt, andernfalls eine leere Zeichenfolge zurück.

Bearbeiten : Dies ist ein Beispiel von einem Code, den ich vor mir habe (vielleicht nicht der beste reguläre Ausdruck sein):

var anum=/(^\d+$)/;

if (!anum.test(document.getElementById("<%=txtConceptOrderValue.ClientID %>").value))
{
    alert("Order Value must be a valid integer");
    document.getElementById("<%=txtConceptOrderValue.ClientID %>").focus();
    return false;
}

Edit 2 : Ich sollte auch beachten, dass ich ASP.NET verwende, weshalb ich die etwas flippige Art und Weise haben die Textbox zuzugreifen. In Ihrem normalen JavaScript Fall kann es nicht als überladen sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top