Foros del Web » Programando para Internet » Javascript »

Validar campos y redirigir con un mismo boton

Estas en el tema de Validar campos y redirigir con un mismo boton en el foro de Javascript en Foros del Web. Tengo un formulario en el cual necesito validar los campos y a la vez dependiendo de la opción elegida en el menú select me redirija ...
  #1 (permalink)  
Antiguo 04/07/2012, 13:14
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 6 meses
Puntos: 12
Validar campos y redirigir con un mismo boton

Tengo un formulario en el cual necesito validar los campos y a la vez dependiendo de la opción elegida en el menú select me redirija a una u otra página. Ya armé los script sin embargo al momento de enviar el formulario, me sale el alert diciendo que un campo está vacio pero de todos modos lo envía. Supongo que se debe a que un botón no tolera 2 comportamientos (un submit y un onclick) o tal vez sí y lo estoy haciendo mal. ¿Alguna idea? Aquí está mi código:


Código HTML:
<script language=javascript>
function valida_envia(){ 
    //valido la provincia
    if (document.form1.select.value.length==0){ 
       alert("Debe elegir provincia de alquiler") 
       document.form1.select.focus() 
       return 0; 
    } 
	
	//valido la zona
    if (document.form1.select2.value.length==0){ 
       alert("Debe elegir zona de alquiler") 
       document.form1.select2.focus() 
       return 0; 
    } 
	
	
	//valido el tipo de auto
    if (document.form1.liste1.value.length==0){ 
       alert("Debe seleccionar tipo de auto") 
       document.form1.liste1.focus() 
       return 0; 
    } 
	
	//valido la fecha de alquiler 
    if (document.form1.fechalq.value.length==0){ 
       alert("Debe seleccionar fecha de alquiler") 
       document.form1.fechalq.focus() 
       return 0; 
    } 
	
	
	//valido la fecha de devolución 
    if (document.form1.fechdev.value.length==0){ 
       alert("Debe seleccionar fecha de devolución.") 
       document.form1.fechdev.focus() 
       return 0; 
    } 
		
    //el formulario se envia
    document.form1.submit(); 
} 

</script>
<form action="grabafecha.php" method="post" name="form1" id="form1">
	
      Pa&iacute;s
        <select name="pais">
            <option selected="selected" value="Argentina">Argentina</option>
            <option>Resto del Mundo</option>
          </select>
      </p>
      Zona
        <select name="select" onchange="slctryole(this,this.form.select2)">
            <option></option>
            <option value="BuenosAires">Buenos Aires</option>
            <option value="CapitalFederal">Capital Federal</option>
            <option value="Chaco">Chaco</option>
           </select>
          <select name="select2" onchange="slctryole(this,this.form.select3)">
            <option></option>
          </select>
      </p>
      <p>

     Devolver el auto en el mismo lugar <input name="devolucion" type="checkbox" id="devolucion" onclick="deshabilita(this.checked)" checked="checked">
<br /><select name="zonadev" id="zonadev">
<option></option>
            <option value="BuenosAires">Buenos Aires</option>
            <option value="CapitalFederal">Capital Federal</option>
            <option value="Chaco">Chaco</option>
            </select>
       
      <div class="Estilo42" id="provincia" style="display:inline"></div>
      <p class="Estilo42">Tipo de Auto
        <select name="liste1">
            <option selected="selected" value=""> </option>
            <option value="compacto3.php">Compacto 3 puertas</option>
            <option value="compacto5.php">Compacto 5 puertas</option>
            <option value="intermedio.php">Intermedio</option>
			<option value="mediano.php">Mediano</option>
            <option value="grande.php">Grande</option>
            <option value="lujo.php">Lujo - Premium</option>
            <option value="pickup42.php">Pick Up (4x2)</option>
			<option value="suv.php">SUV</option>
            <option value="pickup44.php">Pick Up (4x4)</option>
            <option value="van.php">Van &ndash; Minib&uacute;s</option>
            <option value="automatico.php">Autom&aacute;tico</option>
            <option value="blindado.php">Especial - Blindado</option>
          </select>
      </p>
      <p class="Estilo42">Fecha de Alquiler
        <input name="fechalq" class="date-pick" type="text" size="7" id="fechalq">   
        
      <p class="Estilo42">Fecha de Devoluci&oacute;n
        <input name="fechdev" class="date-pick" type="text" size="7" id="fechdev">    
        
      <p class="Estilo42">Kilometraje Diario <br />
          <input type="radio" name="km" value="200" />
        200 kms. 
        <input type="radio" name="km" value="400" />
        400 kms
        <input type="radio" name="km" value="I" />
        Ilimitado </p>
      <p class="Estilo42">Seguro<br />
          <input type="radio" name="seguro" value="B" />
        B&aacute;sico
        <input type="radio" name="seguro" value="C" />
        Completo </p>
      <p>
        <span class="Estilo42">
        <input name="submit" type="submit" value="Buscar" onclick="valida_envia()"/>
	
        </span> </p>

    </form> 
  #2 (permalink)  
Antiguo 04/07/2012, 13:32
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Validar campos y redirigir con un mismo boton

1 - de preferencia llame a la función en el onsubmit del form:

Código HTML:
Ver original
  1. <form onsubmit="return valida_envia();" > ... </form>

de esa forma si todo está OK solo deber hacer un return true; dentro de la función.

2 - evite usar como nombre el nombre (valga la redundancia) de una etiqueta:

<select name="selectx" ...>...

puede que en JS no importe, pero si se acostumbra puede tener problemas en otros lenguajes

3 - de preferencia use las colecciones, porque son soportadas por la mayoría de los navegadores:

document.forms['form1'].elements['selectx'].value

4 - puede, dentro de la función cambiar el action del form:

document.forms['form1'].action = 'miotraurl.php';
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 06/07/2012, 01:17
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: Validar campos y redirigir con un mismo boton

Gracias por tu respuesta. Hice el primer cambio que me sugeriste pero sigue enviando mal. Respecto a ponerle de nombre select sé que es un error pero ya armé así todos los ingresos a bases de datos. Voy a cambiarlo, pero si eso no es lo más urgente prefiero seguir por lo que sí es.

Respecto a las sugerencias 3 y 4 no las comprendo. ¿Dónde debería poner eso? Pero creo que el mayor error es que no estoy devolviendo el valor true dentro de la función porque no sé como hacerlo. Supongo que si eso se arregla luego puedo seguir con lo demás para seguirlo mejorando. Muchas gracias por tus comentarios.
  #4 (permalink)  
Antiguo 06/07/2012, 06:53
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Validar campos y redirigir con un mismo boton

me temo que tendrás que refrescar tus conocimientos en programación estructurada, devolver o retornar desde una función es algo muy básico, y si no lo dominas tu avance es comprometido, y ni hablar cuando quieras incursionar en POO (OOP)
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: campos, formulario, input, php, redirigir, select, botones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:30.