Отправить форму с якорем + JavaScript - плохая практика? - PullRequest
3 голосов
/ 18 июля 2010

В настоящее время у меня есть два тега привязки, отправляющих URL-запросы для помещения голосов в базу данных, но я хочу перейти на использование форм, чтобы сохранить чистоту URL-адресов и избежать дублирования запросов (на самом деле это не проблема, но выглядит уродливо).1001 *

Теперь якоря должны содержать внутри тег span, чтобы добавить дополнительные элементы фона к кнопкам (ссылкам) через css, поэтому я не могу использовать обычные кнопки формы.

Вы считаетеотправлять эти формы с якорей с помощью javascipt как плохую практику?Я могу подумать о некоторых других решениях, но все они не стоят проблем.Должен ли я оставить запасной вариант без сценариев, когда пользователи с отключенным javascript могут вместо этого отправлять URL-запросы (я действительно хочу вообще избегать URL-запросов)?Если, то как это лучше всего будет исполнено?

Спасибо,
Симон.

Ответы [ 3 ]

8 голосов
/ 18 июля 2010

вы можете использовать <button> в вашей форме. он может содержать контент, и вы можете стилизовать его как хотите.

вы можете сделать так, чтобы он выглядел точно так же, как <a>, который есть у вас сейчас, но если щелкнуть по нему, появится форма POST Это почти как если бы у нас был <a>, который делает POST!

5 голосов
/ 18 июля 2010

Выполнение ваших кнопок должно работать следующим образом:

<button type="submit" value="upvote">
  <span>Vote Up</span>
</button>

<button type="submit" value="downvote">
  <span>Vote Down</span>
</button>

Вы должны стараться никогда не отправлять форму с помощью JavaScript или, по крайней мере, гарантировать, что функциональность доступна, когда она выключена.

1 голос
/ 18 июля 2010

Я бы рекомендовал использовать кнопку отправки обычной формы.Вы можете применить CSS к кнопке, чтобы она выглядела стильно, или применить фоновое изображение.

Я не думаю, что то, как вы это сделали, является плохой практикой.Но форма сломается для пользователей, которые используют надстройки, такие как No-Script для Firefox.

...