Estoy tratando de desactivar existing_name campos de nombre_existente en función de los valores que se seleccionaron en el campo de acción. Estoy usando la opción crispy y de representación para el campo de action de models.py
action = models.CharField(max_length=30, choices=[('add', 'Add'), ('delete', 'Delete'), ('modify', 'Modify'), ('rename', 'Rename')])Verifiqué todas las mismas preguntas en Stackoverfllow y todos sugirieron desactivarlo mediante un script con cambios en los campos de acción.
{% extends "KPI_App/base.html" %} {% load crispy_forms_tags %} {% block content %} <form action="" method="post" autocomplete="off" > {% csrf_token %} <div class="row"> <div class="col-md-4 id='1'">{{form.action|as_crispy_field}}</div> </div> <div class="row"> <div class="row id='existing_name' " >{{form.existing_name|as_crispy_field}}</div> <div class="row"> <div class="col-md-8"> <button type="submit" class="btn btn-success btn-block btn-lg"><i class="fas fa-database"></i> Submit</button> </div> <div class="col-md-4"> <a href="{% url 'KPI_list' %}" class="btn btn-secondary btn-block btn-lg"> <i class="fas fa-stream"></i> Back to List </a> </div> </div> </form> {% endblock content %} <script> $(document).ready(function(){ $("select[name='action']").on('change',function(){ if($(this).val()=='1'){ $("input[name='existing_name']").prop("disabled",false); }else{ $("input[name='existing_name']").prop("disabled",true); } }); }); </script>No puedo asignar una identificación para esta clase y usarla en el script
Suponiendo que los ID de entrada de su formulario sean los predeterminados de Django: id_action e id_existing_name .
function toggleAction() { if ($('#id_action :selected').text() == "Modify") { $('#id_existing_name').prop('disabled',false) } else { $('#id_existing_name').prop('disabled',true) } } $(document).on('click change', '#id_action', function() { toggleAction() }) $(document).ready(function() { toggleAction(); });