Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Zeroql en 14 Junio 2011, 19:21 pm



Título: Una pregunta algo tonta!!!
Publicado por: Zeroql en 14 Junio 2011, 19:21 pm
Buenas!!!

Bueno tengo un form  con 2 botones, cada uno hace una funcion diferente de post,
pero tengo una funcion en javascript para validar que los datos esten bien.
lo que necesito es que cuando se presione uno de los botones este valla y verifique segun la funcion y luego redirija a la pagina que se le pidio.

como puedo hacer esto?

bueno, un ejemplo vale mas que mil palabras.
 asi que aca dejo esto para ver que tengo que cambiar.


Código
  1. <form action="post" method="get" name="datos">
  2.        <table width="950" bordercolordark="#333333">
  3.          <tr>
  4.            <td width="102" align="right">Codigo:</td>
  5.            <td width="305"><Input type="text" name="cod" size="5" maxlength="5" style="border-bottom-style: groove; border-bottom-width: 1px; border-bottom-color:#06C"></td>
  6.            <td width="119" align="right">Tipo:</td>
  7.            <td width="404"><Input type="text" name="tipo"  maxlength="20" size="20" style="border-bottom-style: groove; border-bottom-width: 1px; border-bottom-color:#06C"></td>
  8.          </tr>
  9.          <tr>
  10.            <td align="right">Marca:</td>
  11.            <td><Input type="text" name="marca" maxlength="20" size="20" style="border-bottom-style: groove; border-bottom-width: 1px; border-bottom-color:#06C"></td>
  12.            <td align="right">Estado:</td>
  13.            <td><select name="estado1" id="estado" style="border-bottom-style: groove; border-bottom-width: 1px; border-bottom-color:#06C">
  14.              <option value="Disponible">Disponible</option>
  15.              <option value="Agotado">Agotado</option>
  16.              <option value="Oferta">Oferta</option>
  17.              <option value="Descontinuado">Disponible</option>
  18.            </select></td>
  19.          </tr>
  20.          <tr>
  21.            <td align="right">Modelo:</td>
  22.            <td><Input type="text" name="mod" size="20" maxlength="20" style="border-bottom-style: groove; border-bottom-width: 1px; border-bottom-color:#06C"></td>
  23.            <td align="right">Oferta? (Y/N):</td>
  24.            <td><Input type="text" name="oferta" size="5" maxlength="1" style="border-bottom-style: groove; border-bottom-width: 1px; border-bottom-color:#06C"></td>
  25.          </tr>
  26.          <tr>
  27.            <td align="right">Imagen:</td>
  28.            <td><Input type="file" name="img"></td>
  29.            <td align="right">Fin Oferta:</td>
  30.            <td><Input type="date" name="fecha" size="20"  style="border-bottom-style:groove; border-bottom-width:1px; border-bottom-color:#06C"></td>
  31.          </tr>
  32.          <tr>
  33.            <td align="right">Descripcion:</td>
  34.            <td rowspan="2"><textarea name="desc" id="desc" cols="30" rows="3" maxlength="255" style="border-bottom-style:groove; border-bottom-width:1px; border-bottom-color:#06C"></textarea></td>
  35.            <td align="right">Descuento %:</td>
  36.            <td><Input type="text" name="descuento" size="5"  maxlength="5" style="border-bottom-style: groove; border-bottom-width: 1px; border-bottom-color:#06C"></td>
  37.          </tr>
  38.          <tr>
  39.            <td align="right">&nbsp;</td>
  40.            <td>&nbsp;</td>
  41.            <td><input type="submit" name="save" id="guardar" value="Guardar" class="button1" onClick="return validardato(this.cod.value,this.marca.value,this.modelo.value,this.tipo.value,this.oferta.value,this.fecha.value,this.desc.value,this.descuento.value, this.img.value); this.form.action='save.php">
  42.             <input type="submit" name="query" id="consultar" value="Consultar" class="button1">
  43.                <input type="reset" name="clean" id="clean" value="Limpiar" class="button1">
  44.            </td>
  45.          </tr>
  46.        </table>
  47. <hr/>
  48. </form>

entonces como hago para que cada boton valla y valide y luego siga enviando la informacion a la pagina correspondiente


Título: Re: Una pregunta algo tonta!!!
Publicado por: Shell Root en 14 Junio 2011, 19:24 pm
Pues no se como tendrás esas validaciones, es decir, en conjunto o independiente. En caso de hacerla en conjuntos, podrías hacer algo como esto...
Código
  1. <form action = "#" method = "POST" onSubmit="return validarGeneral(this);">

Al estilo :http://www.ribosomatic.com/articulos/validando-formulario-con-jquery/


Título: Re: Una pregunta algo tonta!!!
Publicado por: Zeroql en 14 Junio 2011, 19:37 pm
Shell Root grax pero eso solo me sirve si es un solo boton.

modifique mi mensaje con el form completo para que sea mejor comprendido!!!


Título: Re: Una pregunta algo tonta!!!
Publicado por: cassiani en 15 Junio 2011, 04:10 am
llamas desde tu función de validación al submit, algo así:

Código:
document.forms["myform"].submit();
document.myform.submit();

el problema con validar desde el cliente es que te lo puedes saltar no más deshabilitando el javascript, no olvides las validaciones del lado del servidor.



Título: Re: Una pregunta algo tonta!!!
Publicado por: Shell Root en 15 Junio 2011, 08:31 am
Shell Root grax pero eso solo me sirve si es un solo boton.

Para que veas que no, si usas tú lógica puedes implementarlo fácilmente con 2, 3, 4, 5, etc...  :silbar:


Título: Re: Una pregunta algo tonta!!!
Publicado por: WHK en 15 Junio 2011, 08:50 am
De todas formas te recomiendo validar todo en php y no javascript y mas aun si es algo que compromete seguridad porque bastaría con presionar un botón para deshabilitar javascript en mi explorador y saltar toda tu verificación.


Título: Re: Una pregunta algo tonta!!!
Publicado por: barbieturico en 16 Junio 2011, 19:49 pm
Totalmente de acuerdo con las respuestas anteriores, haz tus validaciones en lado servidor.
De todas formas, una opción para hacer lo que quieres es llamar a la misma función desde los dos botones con un parámetro indicando una diferencia, ahí ya a tu gusto, y luego cambiar el action del formulario desde javascript. Eso sí, seguridad poca... Un ejemplo sería:

Código:
<input type="submit" name="save" id="guardar" value="Guardar" class="button1" onClick="validarformulario('datos', 1)">
<input type="submit" name="query" id="consultar" value="Consultar" class="button1" onClick="validarformulario('datos', 2)">

function validarformulario(nombreForm, variable) {
   if(document.forms[nombreForm].cod.value.isNaN()) {
        ...
   }
   if(document.forms[nombreForm].marca.value==...) {
        ...
   }
   ...
   if(variable==1) {
      document.forms[nombreForm].action='save.php';
   }else if(variable==2)   {
      document.forms[nombreForm].action='consultar.php';
   }
   document.forms[nombreForm].submit();
}

Espero que sea esto a lo que te referías...