Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/01/2015, 15:51
erfrancis6
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Formulario HTML + Javascript

Cita:
Iniciado por NeaFan Ver Mensaje
La idea es que uses la menor cantidad de javascript posible, aquí te plasmo una idea inicialmente solo se ven los primeros 6 elementos (lista[a,b,c];nombre,asunto;email;mensaje) y aunque existe el elemento #otrodato y #otromas estos no son ni requeridos, ni visibles gracias a la propiedad hidden del #contenedor-oculto que no permite su visualización.

Cuando seleccionas la opción [--c--] el #contenedor-oculto elimina su atributo hidden y quedan al descubierto los dos input «que siempre han existido». Además se le agrega atributos de required al imput#otrodato lo que no permitirá enviar el formulario hasta que se complete este campo.

Todo lo anterior gracias a la función SegunOpcion que se dispara cada vez hay un cambio en el select.
Código HTML:
<script type="text/javascript">
    function SegunOpcion(opcion) {
        var miDiv = document.getElementById("contendor-oculto");
        var miInput = document.getElementById("otrodato");
        if (opcion == "c") {
            miDiv.removeAttribute("hidden");
            miInput.setAttribute("required","required");
        } else {
            miDiv.setAttribute("hidden","hidden");
            miInput.removeAttribute("required");
        }
    }
</script>

<form action="">
    <select name="milista" id="milista" onchange="SegunOpcion(this.value);">
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    </select>
    <input type="text" id="nombre" placeholder="Digita tu nombre" required="required"/>
    <input type="text" id="asunto" placeholder="Digita tu asunto" required="required"/>
    <input type="text" id="asunto2" placeholder="Describe tu asunto" required="required"/>
    <input type="email" id="emamil" placeholder="Digita tu correo electronico" required="required"/>
    <textarea id="msj" cols="30" rows="10" placeholder="Digita tu mensaje" required="required"></textarea>
    <div id="contendor-oculto" hidden="hidden">
        <input type="text" id="otrodato" placeholder="Digita el otro dato"/>
        <input type="text" id="otromas" placeholder="Digita el otro dato"/>
    </div>
    <input type="submit" id="boton-envio" />
</form> 
Gracias por construir todo ese formulario y el javascript, pero hay un problema, que yo no entiendo nada de javascript, por lo que no sé adaptar ese formulario + javascript a mi formulario HTML + mi Javascript (que encontré por internet y conseguí modificar a duras penas a algo decente)

Si alguien pudiese implementar este javascript y formulario a el javascript y formulario que yo tengo, se lo agradecería inmensamente.

MI formulario:
Código:
<!--//FORMULARIO-->
            <div id="c_information" class="hide">
                <p></p>
            </div>
            <form id="c_form" name="contact">
                <label>
                    <p>Nombre</p>
                    <input name="nombre" id="c_name" type="text" class="c_input" placeholder="nombre..."/>
                </label>
                <br/>
                <label>
                    <p>Email:</p>
                    <input name="email" id="c_mail" type="text" class="c_input" placeholder="email..."/>
                </label>
                <br/>
                <label>
<form method="post">
                    <select name="asunto" id="c_asunto" type="text" class="c_input" onChange="mostrar(this.value);">
                        <option selected="selected" value="Motivo" disabled="disabled">Motivo</option>
                        <optgroup label="Formatear">
                            <option value="Formatear PC de Sobremesa">PC de Sobremesa</option>
                            <option value="Formatear PC Portátil">PC Portátil</option>
                        </optgroup>
                        <option value"">Otros motivos</option>
                    </select>
</form>
<div id="Otrosmotivos" style="display: none;">
    <form style="margin-top: -10px;">
    	<label>
        	<input name="otroasunto" id="c_otroasunto" type="text" class="c_input" placeholder="otro motivo"/>
        </label>
    </form>
</div>
                <label>
                  <p>Mensaje:</p>
                  <textarea name="mensaje"  id="c_msg" placeholder="mensaje..."></textarea>
                </label>
                <!-- boton enviar  -->
                <div id="c_btns">
                    <input name="send" onclick="cargaSendMail()" type="button" value="Enviar" class="btn-b" id="c_enviar"></input>
                </div>
                </label>
            </form>
<!--//FIN FORMULARIO-->
MI Javascript:
Código:
function cargaSendMail(){
 
 
    $("#c_enviar").attr("disabled", true);
 
    $(".c_error").remove();
 
    var filter=/^[A-Za-z][A-Za-z0-9_]*@[A-Za-z0-9_]+.[A-Za-z0-9_.]+[A-za-z]$/;
    var s_email = $('#c_mail').val();
    var s_asunto = $('#c_asunto').val();
    var s_otroasunto = $('#c_otroasunto').val();
    var s_name = $('#c_name').val();    
    var s_msg = $('#c_msg').val();
 

    if (filter.test(s_email)){
    sendMail = "true";
    } else{
    $('#c_mail').after("<span class='c_error' id='c_error_mail'>Ingrese un e-mail valido.</span>");
     //aplicamos color de borde si el se encontro algun error en el envio
    $('#contactform').css("border-color","#6f1d14");   
    sendMail = "false";
    }
    if (s_name.length == 0 ){
    $('#c_name').after( "<span class='c_error' id='c_error_name'>Ingrese su nombre.</span>" );
    var sendMail = "false";
    }
    if (s_msg.length == 0 ){
    $('#c_msg').after( "<span class='c_error' id='c_error_msg'>Ingrese un mensaje.</span>" );
    var sendMail = "false";
    }
    if (s_asunto == null ){
    $('#c_asunto').after( "<span class='c_error' id='c_error_msg'>Ingrese un motivo.</span>" );
    var sendMail = "false";
    }
    else {
    if (s_otroasunto.length == null ) {
    $('#c_otroasunto').after( "<span class='c_error' id='c_error_msg'>Ingrese un motivo.</span>" );
    var sendMail = "false";}
    if (s_otroasunto.length == null ) {
    $('#c_otroasunto').after( "<span class='c_error' id='c_error_msg'>Ingrese un motivo.</span>" );
    var sendMail = "false";}
    }

    
    if(sendMail == "true"){
     
     var datos = {
 
             "nombre" : $('#c_name').val(),
 
             "email" : $('#c_mail').val(),
 
             "asunto" : $('#c_asunto').val(),
 
             "otroasunto" : $('#c_otroasunto').val(),
 
             "mensaje" : $('#c_msg').val()
 
     };
 
     $.ajax({
 
             data:  datos,
             // hacemos referencia al archivo contacto.php
             url:   'contacto.php',
 
             type:  'post',
 
             beforeSend: function () {
             //aplicamos color de borde si el envio es exitoso
                    $('#contactform').css("border-color","#25A25A");
 
                     $("#c_enviar").val("Enviando...");
 
             },
 
             success:  function (response) {
 
                    $('form')[0].reset(); 
                    $("#c_enviar").val("Enviar");
                    $("#c_information p").html(response);
                    $("#c_information").fadeIn('slow');
                    $("#c_enviar").removeAttr("disabled");
                     
 
 
             }
 
     });
 
} else{
    $("#c_enviar").removeAttr("disabled");
}
 
}

function mostrar(id) {
    if (id == "Otros motivos") {
        $("#Otrosmotivos").show();
    }
    if (id != "Otros motivos") {
        $("#Otrosmotivos").hide();
    }
}
Gracias.