a todos y gracias por vuestra ayuda.
He probado los códigos q me habéis puesto, y funcionan, unos mejor q otros.
Pero no hacen exactamente lo que quiero, es decir, q el usr solo pueda introducir euros, con el formato
parte entera , parte decimal con 2 digitos máximo.
Os pongo como lo he hecho:
Código:
function esEuros(campo)
{
var valor = campo.value;
//comprobacion si PVP tiene formato euros (se podria hacer en funcion aparte, pero en esta funcionalidad no es preciso)
if (EsNumero(campo)) //si es numero, en cuyo caso solo parte entera (si hbuiera al menos una ',', seria false)
{
if (valor != "0") //si PVP no es 0, se hace submit
return true;
else //si PVP es 0, error
return false;
}
else //si hay algun caracter no numero
{
precio = valor.split(","); //se construye un array con las subcadenas del campo PVP separadas por ','
if (precio.length == 2) //si dicho array tiene 2 posiciones (parte entera y parte decimal), es que el PVP tiene parte_entera,parte_decimal
{
var regE=new RegExp("^[\\d]*$"); //expresion regular que comprueba si solo hay digitos
if(regE.test(precio[0]) && regE.test(precio[1])) //comprobacion de parte entera y decimal del valor del PVP introducido (si son numeros unicamente)
{
if (precio[1].length <= 2) //si la parte decimal tiene solo 2 decimales, se hace submit
return true;
else //si parte decimal tiene + de dos decimales
return false;
}
else //si las supuestas parte entera y/o la parte decimal tiene algun caracter no numerico
return false;
}
else //si el array no tiene dos posiciones, es que algo "raro" hay en el PVP
return false;
}
}
[esNumero(n) devuelve si el n pasado es un numero]
Pelin enrevesado, pero me funciona como os he dicho, salvo q vosotros, q sabéis + q yo, me digáis los posibles problemas, q estoy seguro habrá.