как использовать скрытое поле ввода для хранения набора тегов в блоге - PullRequest
0 голосов
/ 29 июня 2011

У меня есть несколько забавный пользовательский интерфейс для ввода тегов для сообщения в блоге: когда теги вводятся в поле ввода, они заключаются в промежутки, которые придают им привлекательный вид, окружая их в стилизованном поле, и конечный результат получаетсячто-то вроде этого: http://forr.st/posts/OLs/original

Теперь это поле ввода (назовите его поле 1) не является частью формы, которая передается в контроллер (я использую RoR, кстати) по двум причинам: оно содержитпосторонние HTML-теги, помимо реальных тегов;Кроме того, если бы она была частью формы, нажатие клавиши ввода отправило бы форму вместо вызова js, который оборачивает введенный тег в диапазон.

Так что я делаю, когда каждый тег вводится, я копирую егозначение (через js) для скрытого поля ввода, которое является частью формы ввода тега, и при отправке будет содержать только значения тега и ничего больше.Вопрос в том, что я должен использовать в качестве разделителя для разделения тегов в скрытом поле ввода.В настоящее время я использую ';'но если сам тег содержит;это может вызвать проблемы.

Я также открыт для предложений об общем методе отслеживания тегов, введенных в 'поле 1'

Большое спасибо,

1 Ответ

0 голосов
/ 29 июня 2011

Я бы порекомендовал просто добавить скрытый ввод для каждого тега.

<input type="hidden" name="post[tags][]" value="tag_name" />
<input type="hidden" name="post[tags][]" value="tag_name" />
<input type="hidden" name="post[tags][]" value="tag_name" />

тогда в рельсах

post.rb

def tags=(value)
   tag_array = [*value]
   # then just filter these out.
end

Я использую аналогичный метод с плагином tokenInput jQuery. Но в моем случае я поместил это внутри формы. Я решил проблемы, о которых вы упомянули, путем захвата события нажатия клавиши и предотвращения его для этого ввода, и я игнорирую значение входного поиска.

Единственное, что мне действительно нравится хранить в форме - это то, как она управляется потом. Я помещаю скрытый тег, имя и удаляемый «x» в промежуток (как вы упомянули), а затем просто удаляю этот тег при нажатии «x». Мне это нравится, потому что имя и hidden_tag удаляются одновременно.

Еще один совет. Если вы можете, передайте tag_id в скрытом поле. Таким образом, вам не нужно добавлять атрибут tags добавить все: <input type="hidden" name="post[tag_ids][]" value="tag_name" />.

...