En mi proyecto Django, en mi página HTML, tengo un script que ejecuta Query dependiendo de los otros valores ($("#id_report").val() valores). La función se ejecuta 'al hacer clic'. El problema es que cuando hago clic en el menú desplegable '#id_person' para seleccionar una opción que obtengo de la consulta, vuelvo a ejecutar la consulta y mi selección se restablece.
El problema es:
post_form.html
{% extends "blog/base.html" %} {% load crispy_forms_tags %} {% block content %} <div class="content-section"> <form method="POST" id="PostForm" data-sektor-url="{% url 'ajax_load_sektors' %}" data-department-url="{% url 'ajax_load_departments' %}" data-person-url="{% url 'ajax_load_persons' %}" novalidate enctype="multipart/form-data"> {% csrf_token %} <fieldset class="form-group"> <legend class="border-bottom mb-4">Submit report</legend> {{ form|crispy }} </fieldset> <div class="form-group"> <button class="btn btn-outline-info" type="submit">Report</button> </div> </form> </div> <script> $("#id_person").click(function () { var value = $("#id_report").val(); var url = $("#PostForm").attr("data-person-url"); $.ajax({ url: url, data: { 'value': value, }, success: function (data) { $("#id_person").html(data); console.log(data); } }); }); </script> {% endblock content %}¿Cómo puedo ejecutar esto solo cuando hago clic en el menú desplegable, no cuando selecciono (luego se ejecuta nuevamente porque es un clic)?
formularios.py
from django import forms from .models import Post, File class PostForm(forms.ModelForm): class Meta: model = Post fields = ['title', 'subject', 'person', 'report']prueba esto .change
<script> $("#id_person").change(function () { var value = $("#id_report").val(); var url = $("#PostForm").attr("data-person-url"); $.ajax({ url: url, data: { 'value': value, }, success: function (data) { $("#id_person").html(data); console.log(data); } }); }); </script>