Estoy tratando de mostrar una alerta si el formulario enviado es válido o no.
En la vista, tengo una entrada oculta que cambia el valor si el formulario es válido o no.
Tengo este JavaScript:
$( document ).ready(function() { if (document.registroForm.alert.value==1){ swal("¡Bien hecho!", "El registro fue exitoso.", "success") } if (document.registroForm.alert.value==0){ swal("¡Oops!", "Algo salió mal.", "error") } }); El problema es que recibo la alerta cada vez que actualizo la página.
Y solo quiero hacerlo cuando el usuario envíe el formulario y la página se actualice
Gracias.
Lo que hice fue establecer la variable "alerta" en Ninguno en la carga de la página. que cambia después de enviar el formulario: (modifiqué esto en mi views.py)
vistas.py
def registroUsuario(request): if request.method == "POST": form = registroForm(request.POST or None) if form.is_valid(): alert = 1 instance = form.save(commit=False) instance.is_active = False instance.save() else: alert = 0 else: alert = None form = registroForm() context = { "titulo": "Registrarse", "form": form, "alert": alert, } template = "micuenta/registro.html" return render(request, template, context)y mi .html:
<form method="POST" action="."> [... some labels and inputs ...] <input type="hidden" name="alert" value="{{alert}}" readonly> </form> <script> $( document ).ready(function() { if (document.registroForm.alert.value==1){ swal("¡Bien hecho!", "El registro fue exitoso.", "success") } if (document.registroForm.alert.value==0){ swal("¡Oops!", "Algo salió mal.", "error") } }); </script>Por cierto, gracias.
He usado algo como esto en el pasado.
$( document ).ready(function() { $('#your-form').on('submit', function(e) { e.preventDefault(); if (document.registroForm.alert.value==1){ swal("¡Bien hecho!", "El registro fue exitoso.", "success"); return true; } else if (document.registroForm.alert.value==0){ swal("¡Oops!", "Algo salió mal.", "error") } }); });Independientemente de cómo lo logre, creo que necesitará un detector de eventos para el envío del formulario y deshabilitará la publicación de forma predeterminada. A continuación, puede realizar su comprobación para un envío válido.
Puede usar una variable de bandera para controlarlo. Pasas la variable por la URL.
En tu botón:
<button type="button" onclick="myFunction(1)">Submit</button> En el guión de esta misma página:
<script type="text/javascript"> function myFunction(value){ window.location = "page.html?myVariabel="+value; } </script> En la página que desea verificar y mostrar el mensaje, puede usar esto:
<script type="text/javascript"> var query = location.search.slice(1); var part = query.split('='); if(part[1] == 1){ //Your code } </script>Lo que hice fue establecer la variable "alerta" en Ninguno en la carga de la página. que cambia después de enviar el formulario: (modifiqué esto en mi views.py)
vistas.py
def registroUsuario(request): if request.method == "POST": form = registroForm(request.POST or None) if form.is_valid(): alert = 1 instance = form.save(commit=False) instance.is_active = False instance.save() else: alert = 0 else: alert = None form = registroForm() context = { "titulo": "Registrarse", "form": form, "alert": alert, } template = "micuenta/registro.html" return render(request, template, context)y mi .html:
<form method="POST" action="."> [... some labels and inputs ...] <input type="hidden" name="alert" value="{{alert}}" readonly> </form> <script> $( document ).ready(function() { if (document.registroForm.alert.value==1){ swal("¡Bien hecho!", "El registro fue exitoso.", "success") } if (document.registroForm.alert.value==0){ swal("¡Oops!", "Algo salió mal.", "error") } }); </script>Por cierto, gracias.