Lo que quiero conseguir es:
Tengo un formulario HTML en el que tengo una lista desplegable.
Al elegir una opción (y también haber rellenado los demás espacios del formulario), se manda correcto el formulario.
Pero una de las opciones de la lista desplegable es "Otros motivos".
Conseguí que al elegir "Otros motivos" aparezca un segundo "formulario" para que el usuario elija un motivo diferente a los de la lista.
Mi problema es:
Consigo que el formulario no se mande si no se elije un elemento de la lista desplegable.
Consigo que al elegir "Otros motivos" salga un segundo formulario.
NO consigo que cuando se elije ese segundo formulario, aunque no se escriba nada, el formulario se envía igualmente.
Quisiera que cuando se eligiese "Otros motivos", el nuevo formulario que aparece también fuese obligatorio de rellenar para poder enviar el formulario.
~ Gracias.
Código javascript completo:
Código:
El mismo código javascript, pero sólo la parte que ha de ser modificada: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(); } }
Código:
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";} }