Tengo un formulario html:
<form id="formfacility"> <input type="text" id="MyName"> <button type="button" id="btnCanxFormFacility">Cancel</button> <button type="submit" id="btnSubmitForm">Submit</button> </form>luego en javascript tengo para el botón de enviar:
$("[id^='btnSubmitForm']").click(function (evt) { evt.preventDefault(); var btnID = "#" + $(this).attr('id'); var formID = btnID.replace("btnSubmit", ""); console.log(btnID, formID); ProcessFormSubmit(formID, btnID); });donde ProcessFormSubmit realiza la validación y guarda los datos a través de AJAX.
para btnCanxFormFacility, tengo
$("#btnCanxFormFacility").click(function () { let hideandreset = false; let HasChanges = HasLocationDataChanged(); if (HasChanges) { if (confirm("Are you sure you want to cancel and lose your changes?")) { hideandreset = true; } } else { hideandreset = true; } if (hideandreset) { $('#FormFacility').trigger("reset"); $("#btnCanxFormFacility").prop("disabled", true); } });Mi problema es que cuando se hace clic en btnCanxFormFacility, se eliminan todos los datos que se ingresaron en el formulario después de cargar la página. Normalmente, esto es lo que se supone que sucede con un reinicio de HTML y se resolvería mediante la publicación y recarga del formulario. Sin embargo, dado que estoy usando JavaScript y AJAX, no hay un viaje de ida y vuelta, por lo que el formulario cree que todas esas entradas son cambios y las borra.
¿Hay alguna manera fácil de decirle al navegador que no restablezca ninguno de los campos que se guardaron en la última ejecución de "btnSubmitForm"?
Tal vez no me expliqué claramente.
Gracias,
En su caso, puede agregar esto en el momento de ProcessFormSubmit , ya sea dentro de ProcessFormSubmit, por ejemplo, si esto ya tiene código para las entradas en bucle o antes/después.
La clave es:
$(this_input).prop("defaultValue", $(this_input).val())