Estoy haciendo un formulario y me gustaría que el código se ejecute solo si los valores de entrada son números. Intento evitar el uso de algún tipo de complemento de validación y me preguntaba si hay una forma de recorrer los campos de entrada y verificar los valores.Looping a través de los campos de entrada para la validación usando Jquery cada()
he estado tratando el siguiente, pero creo que mi lógica es erróneo:
(#monthlyincome es el identificador de forma)
$("#submit").click(function() {
$("#monthlyincome input").each(function() {
if (!isNaN(this.value)) {
// process stuff here
}
});
});
¿Alguna idea?
Este es todo el código de actualización:
$("#submit").click(function() {
$("#monthlyincome input[type=text]").each(function() {
if (!isNaN(this.value)) {
// processing data
var age = parseInt($("#age").val());
var startingage = parseInt($("#startingage").val());
if (startingage - age > 0) {
$("#field1").val(startingage - age);
$("#field3").val($("#field1").val());
var inflationyrs = parseInt($("#field3").val());
var inflationprc = $("#field4").val()/100;
var inflationfactor = Math.pow(1 + inflationprc, inflationyrs);
$("#field5").val(inflationfactor.toFixed(2));
var estyearlyinc = $("#field6").val();
var inflatedyearlyinc = inflationfactor * estyearlyinc;
$("#field7").val(FormatNumberBy3(inflatedyearlyinc.toFixed(0), ",", "."));
var estincyears = $("#field2").val();
var esttotalinc = estincyears * inflatedyearlyinc;
$("#field8").val(FormatNumberBy3(esttotalinc.toFixed(0), ",", "."));
var investmentrate = $("#field9").val()/100;
var investmentfactor = Math.pow(1 + investmentrate, inflationyrs);
$("#field10").val(investmentfactor.toFixed(2));
var currentsavings = $("#field11").val();
var futuresavings = currentsavings * investmentfactor;
$("#field12").val(FormatNumberBy3(futuresavings.toFixed(0), ",", "."));
//final calculations
var futurevalue = (1 * (Math.pow(1 + investmentrate, inflationyrs) - 1)/investmentrate);
var finalvalue = (1/futurevalue * (esttotalinc - futuresavings));
$("#field13").val(FormatNumberBy3(finalvalue.toFixed(0), ",", "."));
}
// end processing
}
});
});
FormatNumberBy3 es una función para dar formato a los números .... :)
no ha comprobado esto, pero me vino a la mi cabeza ... Si está haciendo cada uno() en todos los elementos de entrada, probablemente incluirá también el botón de enviar, por lo que comprobará el valor de su envío y fallará si ese no es un número. No lo he probado, pero parece lógico;) Además, el código no está cerrado correctamente, pero podría ser simplemente un error de copiar y pegar. – Sondre
@Sondre, yo también estaba pensando eso, pero él podría (y debería) estar usando '
@Sondre: He intentado usar una clase (que solo corresponde a unos pocos campos de entrada) con el mismo resultado (negativo). El cierre fue de hecho un error de copiar y pegar. : P @ Box9: No estoy usando el botón en realidad pero aún no funcionará aunque use $ (". Classname"). Each(). –