Hola, soy nuevo en ajax y tengo una respuesta json de django con una lista de nombres que se mostrarán como una lista de botones. Quiero deshabilitar el botón una vez que se hace clic.
A continuación se muestra el código html que escribo actualmente, el botón se muestra correctamente pero no realiza la acción del botón de desactivación.
También me gustaría preguntar cuál es el alcance de esta función onclick . ¿La función muere al final de la llave } ? ¿O esta función verifica incluso si está fuera del alcance?
<h3>User List:</h3> <ul id="userLists"> </ul> $(document).ready(function(){ $.ajax({ type:"GET", // getUserList is a django views where it query the database and returns JsonResponse of the user's name url: "{% url 'getUserList' %}", success: function(response){ $("#userLists").empty(); // Create a list according to number of users in json for (var key in response.users){ var temp="<button type=\"button\", name=\""+ response.users[key].user +"\", class=\"btn btn-outline-danger\">" + response.users[key].user + "</button>"; $("#userLists").append(temp); // Here I want to do when clicked, it disables the button and leave others as is. // Current implementation does not work... document.getElementsByName(response.users[key].user).onclick = function(){document.getElementsByName(response.users[key].user).prop('disabled', true)}; }; } }); })También probé la siguiente implementación, no funciona...
if(document.getElementsByName(response.user[key].user).clicked == true){ document.getElementsByName(response.user[key].user).prop("disabled", true); };Gracias a todos.
getElementsByName devuelve una lista de nodos... Entonces, una colección de elementos coincidentes.
Es por eso que .onclick y .prop("disabled", true) no tienen efecto.
si response.users[key].user debe ser único, puede usar de forma segura document.getElementsByName(response.user[key].user)[0] .
Así que agregue [0] para apuntar a la primera coincidencia.
Acerca de las comillas , puede que le interese leer sobre los literales de plantilla .