Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

299
Views
Agregar en <li><input/></li> funciona solo una vez

Me gustaría hacer que se pueda ingresar un li después de ejecutar la página. Quiero que la función li se acerque al formato de Word Office. Quiero decir, cuando escribimos en la primera lista y luego la INTRODUCIMOS, se centraría en la segunda lista y etc. y este es mi código que he hecho antes:

 <div class="writeform"> <label class="subtitle">ingredients</label> <ol> <li><input class="formxyz globalwrite" id="ingred" name="ingred" placeholder="ingredients"></input> </li> </ol> </div>

y este es el script en ajax

 $('input#ingred').on('keydown',function(e){ if(e.which == 13) { $('ol').append('<li><input class="formxyz globalwrite" id="ingred" name="ingred" placeholder="ingredients"></input></li>'); $('input#ingred').focus(); } });

cuando ejecuto este código y escribo en la primera línea, luego presiono ENTER, aparece el segundo li. Pero cuando escribo en 2nd li y presiono enter, no se agrega nada. ¿Cómo puedo hacer que esta función de agregar funcione continuamente cuando presiono la tecla ENTER?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

No puede tener usos duplicados de valores de ID: no es HTML válido y su selector para el elemento de entrada no funcionaría correctamente. Lo mismo ocurriría con el uso de una clase, aunque es válido tener múltiples usos de una clase, la selección seleccionaría todos los elementos coincidentes. Deberá generar una ID única o usar un selector diferente para seleccionar el último elemento de entrada, como el selector jquery .last() .

over 4 years ago · Santiago Trujillo Report

0

Si hay dos selectores de ID con el mismo nombre, jQuery solo selecciona el primero.

over 4 years ago · Santiago Trujillo Report

0

Debe vincular el evento keydown usando el método de delegación, así:

Cambia esto:

$('input#ingred').on('keydown',function(e) {

Dentro de esto:

$(document.body).on('keydown','input#ingred',function(e) {

Porque la primera sintaxis no se vinculará a los elementos que se crean más tarde (dinámicamente).

ACTUALIZAR

Para una forma más correcta, debe hacer que se vincule a class o atributo de name en lugar de id , porque id id originalmente para nombrar elementos y debe ser único.

Creo que esto es lo que necesitas de la manera correcta: :D

$(document.body).on('keydown','input.formxyz',function(e) {

o:

$(document.body).on('keydown','input[name="ingred"]',function(e) {

¡Buena suerte!

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!