Aclaremos algunos conceptos,
cuando envías un form html tradicional, acción a la que se denomina "submit", estás pasando los valores de todos aquellos campos que contengan un "name" a una url que está definida en el atributo "action"
Código HTML:
Ver original<form action="x.php" method="post"> <input type="text" name="nombre" value="" /> <input type="submit" name="procesar" value ="enviar" />
hasta ahi, nada de javascript, al presionar enviar, el texto ingresado en nombre se pasa a x.php y es recibio por esta como $_POST['nombre'];
A veces necesitamos que los valores ingresados sean validados contra una serie de requisitos (cantidad de caracteres, formato de un email, que el valor si es numérico no sea > ó <, etc). hay tres formas de validar
a través de javascript
en el servidor (php en nuestro caso)
ó una forma mixta (javascript y php), generalmente se usa ajax para esto.
La primera es completamente insegura y fácil de violar por el cliente, pero bueno ese es otro tema.
Vayamos de todas maneras a un ejemplo de la primera aplicada al form anterior
Código HTML:
Ver original<form action="x.php" method="post" onsubmit="return validar();"> <input type="text" name="nombre" id="nombre" value="" /> <input type="submit" name="procesar" value ="enviar" />
y nuestra funcion validar (muy simplificada)
Código Javascript
:
Ver original<script type="text/javascript">
function validar(){
var elNombre = document.getElementById('nombre');
if(elNombre.value == ""){
alert('falta nombre');
return false;
}
}
</script>
Esto significa que cuando hacés el submit del form(de paso te aclaro que dentro de un form los únicos que hacen submit en forma natural son el <input type="submit"> y el <button>enviar</button>, no asi el <input type="button">) se espera que nuestra función devuelva algo, por eso lo de "return validar();" y no solo "validar();"
Si devuelve false porque no se cumple alguna condición requerida, entonces el submit se cancela. si no el submit sigue su curso y te dirije al x.php del action.
Si el código que pusiste funciona o no, no es posible saberlo sin ver el html completo
SAludos