Ver Mensaje Individual
  #6 (permalink)  
Antiguo 05/01/2015, 14:32
NeaFan
 
Fecha de Ingreso: diciembre-2014
Ubicación: montería
Mensajes: 33
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Formulario HTML + Javascript

Pues te diré que tu estructura esta un tanto sobrecargada:

Código HTML:
Ver original
  1.     <label>
  2.         <input/>
  3.     </label>
  4.     <label>
  5.         <input>
  6.     </label>
  7.     <label>
  8.         <form>
  9.             <select>
  10.                 <option>...</option>
  11.             </select>
  12.         </form>
  13.         <div>
  14.             <form>
  15.                 <label>
  16.                     <input/>
  17.                 </label>
  18.             </form>
  19.         </div>
  20.         <label>
  21.             <textarea></textarea>
  22.         </label>
  23.         <div>
  24.             <input></input>
  25.         </div>
  26.     </label>
  27. </form>

No creo que sea necesario tener un form dentro de otro y además que solo se une para contener un select.

Me atreveré a esquematizar algo parecido según lo que creo una vez ejecuto tu formulario, pero te sugiero que busques alternativas de diseño «siempre trata de ser lo mas simple posible| no combines en lo posible css y html | no uses Javascript si no es necesario | jQuery es bueno pero deberías aprender un poco de javascript»

Con esto logro exactamente tu formulario:

Código HTML:
Ver original
  1. <form action="" method="POST">
  2.     Nombre
  3.     <input type="text" id="c_name" name="name" required="required"/>
  4.     Email
  5.     <input type="email" id="c_email" name="email" required="required"/>
  6.     <select id="c_asunto" name="asunto" class="c_input" onChange="mostrar(this.value);">
  7.         <option selected="selected" value="Motivo" disabled="disabled">Motivo</option>
  8.         <optgroup label="Formatear">
  9.             <option value="Formatear PC de Sobremesa">PC de Sobremesa</option>
  10.             <option value="Formatear PC Portátil">PC Portátil</option>
  11.         </optgroup>
  12.         <option value="Motivos Varios">Otros motivos</option>
  13.     </select>
  14.     <input type="text" id="c_otroasunto" name="otroasunto" placeholder="otro motivo"/>
  15.     Mensaje
  16.     <textarea id="c_msg" name="mensaje" placeholder="mensaje..."></textarea>
  17.     <input type="button" id="c_enviar" value="Enviar" />
  18. </form>

Claro esta que la disposición la haces tu mediante css. deje algunas de las funciones que realmente parecen útiles. Los campos se validan con el atributo required excepto otroasunto que solo es requerido una vez es visible, osea cuando la opción Otros motivos es seleccionada.

Código Javascript:
Ver original
  1. function mostrar(id) {
  2.                 var campo = document.getElementById("c_otroasunto");
  3.                 if (id == "Otros motivos") {
  4.                     campo.setAttribute("required", "required");
  5.                     campo.removeAttribute("hidden");
  6.                 } else {
  7.                     campo.setAttribute("hidden", "hidden");
  8.                     campo.removeAttribute("required");
  9.                 }
  10.             }

Espero que esto solucione tu problema te pongo un ejemplo para copypaste maquetado un poco con css (solo para que sea mas visual).

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <head>
  3.         <meta charset="UTF-8">
  4.         <title>Frame Contenedor</title>
  5.         <!--OJO EL ESTILO LO DEFINES TU-->
  6.         <style type="text/css">
  7.             form {
  8.                 width: 30%;
  9.             }
  10.             input, textarea, select {
  11.                 width: 100%
  12.             }
  13.         </style>
  14.         <!--FINALIZA EL ESTILO-->
  15.         <script type="text/javascript">
  16.             function mostrar(id) {
  17.                 var campo = document.getElementById("c_otroasunto");
  18.                 if (id == "Otros motivos") {
  19.                     campo.setAttribute("required", "required");
  20.                     campo.removeAttribute("hidden");
  21.                 } else {
  22.                     campo.setAttribute("hidden", "hidden");
  23.                     campo.removeAttribute("required");
  24.                 }
  25.             }
  26.         </script>
  27.     </head>
  28.     <body>
  29.         <form action="" method="POST">
  30.             Nombre
  31.             <input type="text" id="c_name" name="name" required="required"/>
  32.             Email
  33.             <input type="email" id="c_email" name="email" required="required"/>
  34.             <select id="c_asunto" class="c_input" name="asunto" onchange="mostrar(this.value);">
  35.                 <option selected="selected" value="Motivo" disabled="disabled">Motivo</option>
  36.                 <optgroup label="Formatear">
  37.                     <option value="Formatear PC de Sobremesa">PC de Sobremesa</option>
  38.                     <option value="Formatear PC Portátil">PC Portátil</option>
  39.                 </optgroup>
  40.                 <option value="Otros motivos">Otros motivos</option>
  41.             </select>
  42.             <input type="text" id="c_otroasunto" name="otroasunto" placeholder="otro motivo" hidden="hidden"/>
  43.             Mensaje
  44.             <textarea id="c_msg" name="mensaje" placeholder="mensaje..." required="required"></textarea>
  45.             <input type="submit" id="c_enviar" value="Enviar"/>
  46.         </form>
  47.     </body>
  48. </html>