Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

217
Vistas
¿Cómo hacemos que una respuesta htmx active un restablecimiento de formulario?

Estoy creando una aplicación de mensajería Django muy básica y me gustaría usar htmx para enviar y procesar mensajes. Puedo publicar, guardar el mensaje y mostrar el mensaje parcial sin problemas. Sin embargo, me encuentro con un problema extraño en el que no se reinicia el área de texto de mi formulario. Entonces, enviaría un mensaje, y después de insertar el intercambio, mi mensaje anterior aún estaría en el área de texto. ¡Esto no es muy ideal!

Traté de borrar manualmente el área de texto agregando un evento onclick así:

html

 <div id="new-message-div"></div> <form id="message-form" class="chat-form rounded-pill bg-dark" data-emoji-form="" hx-post="{% url "chat:create-message" object.pk %}" hx-target="#new-message-div"> ... {{ message_form }} ... <button class="btn btn-icon btn-primary rounded-circle ms-5" type="submit" onclick="submitForm()"> </button> </form>

Guión ( https://stackoverflow.com/a/14589251/12758446 )

 <script> function submitForm() { var message_form = document.getElementById('message-form'); message_form.submit(); // Submit the form message_form.reset(); // Reset all form data return false; // Prevent page refresh } </script>

A pesar de tener message_form.submit() en submitForm(), mi formulario no se envía, pero el área de texto se restablece.

Pregunta:

¿Cómo haría para restablecer mi área de texto después de enviar y entregar un mensaje con éxito?

Vista de Django, basada en https://github.com/legionscript/socialnetwork/blob/84375841429887e394a2a31e1b67919f81a3cb06/social/views.py#L428

 def create_message(request, pk): message = None if request.htmx: thread = get_object_or_404(ThreadMessageModel, pk=pk) form = MessageModelForm(request.POST) if thread.receiver == request.user: receiver = thread.user else: receiver = thread.receiver if form.is_valid(): message = form.save(commit=False) message.thread = thread message.sender_user = request.user message.receiver_user = receiver message.save() form = MessageModelForm() return render(request, 'chat/subtemplate/render_message.html', {'message': message})
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Para soluciones del lado del servidor, podría:

  1. Aumente el objetivo en hx-target para incluir tanto el nuevo mensaje como el formulario para que ambos se reemplacen al enviar. Por supuesto, la respuesta parcial en este caso tendría que ser ajustada.

  2. Mantenga las cosas como están ahora, pero incluya el formulario en su respuesta para un intercambio oob (fuera de banda) https://htmx.org/attributes/hx-swap-oob/ . Para el intercambio de oob, agregue el marcado del formulario a su nueva respuesta de mensaje con el atributo hx-swap-oob="true" .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda