Pregunta

Estoy usando Ajax.Autocompleter clase desde el Prototype/Scriptaculous de la biblioteca que se llama a un ASP.NET WebHandler que crea una lista desordenada con los elementos de la lista que contienen sugerencias.

Ahora estoy trabajando en una página donde usted puede agregar sugerencias, a las 'palabras' de la tabla, lo que significa que si se producen en la tabla, no se propuso nunca más.

Puedo poner un botón en el interior de la LI elementos y cuando haga clic en ella se deberá hacer una petición ajax a una página en la que, a continuación, agrega la palabra a la mesa.Que funciona.Pero luego quiero que las sugerencias que se actualice al instante, por lo que las sugerencias que aparecen sin la palabra que acaba de ser añadido a la tabla.Preferentemente la palabra seleccionada es la palabra siguiente o antes de la que se hizo clic previamente palabra.

¿Cómo puedo hacer esto?Lo que sucede en su lugar ahora es que el LI de hacer clic en el botón de llega a ser la palabra seleccionada y las sugerencias desaparecer.

Los elementos de la lista este aspecto:

<li>{0}
 <img onclick=\"deleteWord('{0}');\" src=\"delete.gif\"/>
</li>

Donde {0} representa la palabra sugerida.La función de JavaScript deleteWord(w) se pone a llamar a la webhandler que puede añadir la palabra a la parada del 'palabras' de la tabla.

¿Fue útil?

Solución

Scriptaculous Autocompleter supervisa el evento onclick en el 'li'.Cuando usted se pega una imagen dentro de un 'li', los 'img' y el 'li' recibirá el evento click, como esta muestra.Es por eso que Autocompleter es solo hacer su cosa normal cuando se pulsa el botón:

<ul>
  <li onclick="alert('li');">
    <img onclick="alert('image')" src="blah.gif"/>
  </li>
</ul>

Lo que me gustaría probar es tener su 'onclick' establecer algún tipo de variable de estado que indica que Eliminar que se ha hecho clic.A continuación, reemplazar 'updateElement' en el Autocompleter para no hacer nada si el estado se establece.Una alternativa es crear una subclase de la totalidad de la Autocompleter y reemplazar 'onClick'.Que hará que la lista no desaparecen cuando su imagen se hace clic.

Para tener la actualización de la lista en tiempo real, en la imagen del 'onclick', eliminar el 'li' de la lista en el DOM demasiado.Como este conceptualmente:

img onclick="deleteWord('blah');setStateVariable();this.parentNode.parentNode.removeChild(this.parentNode);"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top