Scriptaculous Ajax.Autocompleter дополнительные функции в LI

Я использую класс Ajax.Autocompleter из библиотеки Prototype / Scriptaculous, который вызывает ASP.NET WebHandler, который создает неупорядоченный список с элементами списка, содержащими предложения.

Сейчас я работаю над страницей, на которой вы можете добавлять предложения в таблицу «стоп-слов», что означает, что если они встречаются в таблице, они больше не будут предлагаться.

Я помещаю кнопку внутри элементов LI, и когда вы нажимаете на нее, она должна выполнять запрос ajax к странице, которая затем добавляет слово в таблицу. Это работает. Но затем я хочу, чтобы предложения обновлялись мгновенно, чтобы предложения появлялись без слова, только что добавленного в таблицу. Предпочтительно выбранное слово является словом, следующим или перед словом, по которому щелкнули ранее.

Как мне это сделать? Вместо этого теперь происходит то, что LI, на которую вы нажали кнопку, становится выбранным словом, и предложения исчезают.

Пункты списка выглядят так:

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

Где {0} представляет предлагаемое слово. Функция JavaScript deleteWord(w) вызывает веб-обработчик, который может добавить слово в таблицу «стоп-слов».

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
2 290
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Scriptaculous Autocompleter отслеживает событие onclick на "li". Когда вы вставляете изображение внутри li, как img, так и li получат событие щелчка, как это демонстрирует. Вот почему автозаполнение просто делает свои обычные дела, когда нажимается кнопка:

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

Я бы попробовал, чтобы ваш «onclick» установил какую-то переменную состояния, которая сообщает вам, что нажата кнопка «Удалить». Затем переопределить updateElement в автозаполнении ничего не делает, если состояние установлено. Альтернативой является создание подкласса всего автозаполнения и переопределение onClick. Это заставит список не исчезать при нажатии на ваше изображение.

Чтобы список обновлялся в режиме реального времени, в onclick вашего изображения удалите также li из списка в DOM. Как это концептуально:

img onclick = "deleteWord('blah');setStateVariable();this.parentNode.parentNode.removeChild(this.parentNode);"

Спасибо, попробую завтра, когда вернусь на работу.

Michiel Borkent 14.09.2008 13:06

Другие вопросы по теме