Conseguir un valor entero de un cuadro de texto, la forma de comprobar si es NaN o nula etc?

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

  •  16-09-2019
  •  | 
  •  

Pregunta

Estoy tirando un valor medio de JavaScript desde un cuadro de texto. Si el cuadro de texto está vacía, devuelve NaN. Quiero devolver una cadena vacía si es nulo, vacío, etc.

¿Qué cheque hago? if(NAN = tb.value)?

¿Fue útil?

Solución

Hm, algo es a pescado aquí.

En lo que hace un navegador de texto retorno vacío NaN? Nunca he visto que esto suceda, y no puedo reproducirlo.

El valor de un cuadro de texto es, de hecho, una cadena. Un cuadro de texto vacío devuelve una cadena vacía!

Ah, y para comprobar si algo es NaN, se debe utilizar:

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

Nota: La función devuelve isNaN()-true para cualquier cosa que no se puede analizar como un número, a excepción de las cadenas vacías. Eso significa que es un buen cheque de entrada numérica (mucho más fácil de expresiones regulares):

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

Otros consejos

También puede hacerlo de esta manera:

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

NaN es igual a nada, ni siquiera a sí mismo.

Si no te gusta usar + para convertir de cadena a número, utilice el parseInt normal, pero recuerde que debe dar siempre una base

var number = parseInt(input.value, 10)

lo contrario "08" se convierte en 0 porque Javascript piensa que es un número octal.

Asumiendo que tiene una referencia al cuadro de texto de entrada:

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

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

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

Una cosa que podría hacer es un cheque de expresiones regulares en el valor del cuadro de texto y asegurarse de que encaja el formato de un número aceptado, y luego si se ajusta el formato de realizar su proceso, de lo contrario devuelve una cadena vacía.

Editar : Este es un ejemplo de algún código que tengo frente a mí (tal vez no sea la mejor expresión regular):

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

Editar 2 : También debo señalar que estoy usando ASP.NET que es por eso que tengo la forma ligeramente funky de acceso a la caja de texto. En su caso común de JavaScript que puede no ser tan desordenada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top