Tengo un formulario como:
<form method='post' action="submit.cfm" id='formid' class="formclass" name="formname"> <input type='submit' name='submit' value="save"> <input type='submit' name='submitDraft' value="save draft"> </form>Ahora, sin jQuery, puedo enviar el formulario y se validará con los campos requeridos de html para los campos que deba ser, y lo llenaré y lo guardaré, ahora para guardar el borrador, quiero guardarlo sin validación y tratando de use jQuery para lograr esto, pero no funciona como se esperaba.
Intenté así:
$("#formid").submit(function(event) { event.preventDefault(); // prevent default action var post_url = $(this).attr("action"); // get form action url var form_data = $(this).serialize(); // Encode form elements for submission $.post( post_url, form_data, function( response ) { $("#server-results").html( response ); }); });Ahora puedo matar 2 pájaros de un tiro, alguna solución factible? No hay un campo de carga, por lo que estoy a salvo desde esa perspectiva.
Se le ocurrieron más intentos
<script type="text/javascript"> $(document).on('submit','#formid',function(event) { event.preventDefault(); //prevent default action var _id = $(this).find("#saved").attr('id'); if(_id == 'saved') { alert('hi'); var isDrafted = 0; $.validate({ modules : 'date, file' }); } else { alert('hello'); var isDrafted = 1; var post_url = $(this).attr("action"); //get form action url var form_data = $(this).serialize() & '&isDrafted=' + isDrafted; //Encode form elements for submission $.post( post_url, form_data, function( response ) { $("#server-results").html(response); }); } }); </script>Ahora estoy usando un validador de formvalidation.net, es viejo pero funciona y, sinceramente, será un desastre reemplazarlo, entonces, ¿cómo puedo hacer que esto funcione?
Algo más noté, tuve que hacer clic en el botón dos veces antes de que mostrara mensajes de validación cuando hice clic en guardar.
Y cuyo contexto es guardar significa enviar a la página de acción para guardar en la base de datos
Debería nombrar los botones de la misma manera con diferentes valores, como se menciona aquí :
<input type='submit' name='submit' value="save"> <input type='submit' name='submit' value="save draft">O, dado que está abierto a jQuery, configurando un campo oculto en el que se presionó el botón Enviar:
<input type='hidden' name='whichSubmit' id='whichSubmit'> <input type='submit' name='submit' value="save"> <input type='submit' name='submitDraft' value="save draft"> $("#formid").submit(function(event){ $('#whichSubmit').val(event.target.name); });(ambos son pseudocódigo no probado)