Нумерованное голосование

Я был бы так очень благодарен, если бы кто-то мог мне помочь! Я целую вечность искал в Интернете способ достижения желаемой интерактивности пользователя, упомянутой ниже (возможно, уже есть аналогичный скрипт, о котором я не знаю?).

Проблема:

Вспомогательное изображение: http://img.photobucket.com/albums/v291/Dark_Jessa/btn_instructions.jpg

Существует список кандидатов, рядом с каждым из которых стоит кружок. Когда пользователь щелкает внутри круга, внутри появляется число. Этот процесс будет продолжаться для всех остальных кругов с числами в порядке возрастания.

Если пользователь изменит свое мнение о числе, которое он дал кругу, пользователь может нажать на число, и оно исчезнет из круга.

Когда пользователь щелкает внутри другого круга, число внутри круга будет заменено числом, удерживаемым курсором.

ПРИМЕР: Пользователь хочет, чтобы «Дэвид МОРГАН» был его вторым выбором. Таким образом, пользователь щелкнет внутри круга рядом с «Дэвидом МОРГАНОМ». Число «3», которое раньше было в круге, теперь удалено из круга.

Теперь пользователь нажимает на кружок рядом со словом «Стив ПРАТТ», внутри которого стоит цифра «2». Число «3», которое было прикреплено к пользовательскому курсору, теперь заменяет число 2 при нажатии. Теперь пользователь невидимо держит цифру «3».

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

Если они нажмут кнопку отправки и не войдут во все круги, они перейдут на страницу, информирующую их об этом.

Мне не нужны какие-либо данные, записанные на постоянной основе, только варианты, записанные временно в подтверждении.

Любые идеи? :3


person Jess    schedule 29.11.2010    source источник
comment
Вы, кажется, забыли упомянуть язык.   -  person Ignacio Vazquez-Abrams    schedule 29.11.2010
comment
@user: да, я согласен с @Ignacio. Как насчет контекста? Ваши теги действительно бессмысленны.   -  person Matt Ball    schedule 29.11.2010
comment
С чем вам помочь? Мы не можем помочь вам сделать все это, но мы можем дать рекомендации по небольшим частям проблемы.   -  person John Kugelman    schedule 29.11.2010
comment
Извините :( Я думаю, PHP или javascript было бы проще всего использовать для меня. Это если это может быть достигнуто с помощью любого из них.   -  person Jess    schedule 29.11.2010
comment
Какова природа проекта?   -  person outis    schedule 29.11.2010
comment
Моя главная проблема — пользовательский интерфейс: щелчок по кругу и появление числа. Затем, если вы нажмете на другой кружок, появится возрастающий номер.   -  person Jess    schedule 29.11.2010
comment
Это проект школы графического дизайна по созданию макета системы онлайн-голосования на выборах штата. Мне не нужно делать его интерактивным. Но мне бы очень хотелось, чтобы подобные скрипты помогли заставить этот макет работать. :)   -  person Jess    schedule 29.11.2010
comment
JS был бы лучшим языком, так как он не требует перезагрузки страницы при обращении к серверу. Что касается домашних заданий, прочтите Часто задаваемые вопросы по SO Как задавать домашние вопросы и отвечать на них?.   -  person outis    schedule 29.11.2010


Ответы (1)


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

Например, используйте две (неглобальные) переменные, (например) nextRank и nowRank. Значение nextRank означает, что все ранги >= nextRank не назначены.

Когда пользователь нажимает на пустой кружок:

  1. если nowRank является положительным целым числом, присвоить кандидату ранг nowRank и установить nowRank равным 0
  2. иначе назначьте кандидата nextRank и увеличьте nextRank

Когда пользователь нажимает на закрашенный кружок,

  1. если nowRank является положительным целым числом, поменять местами ранг кандидата и nowRank (если он не равен нулю)
  2. иначе установите nowRank на ранг кандидата и очистите ранг кандидата.

Поскольку это вопросы домашнего задания, вот еще один сценарий, который вы можете рассмотреть: щелчок по ранжированному кандидату отменяет присвоение этого ранга, но не присваивает ранее не присвоенный ранг. Ранги присваиваются только тогда, когда у кандидата нет ранга. Как бы вы это реализовали?

person outis    schedule 29.11.2010
comment
Спасибо за ваш ответ, хотя я очень ноль, когда дело доходит до программирования! Но да... теперь я думаю об этом, это становится немного сложнее. Я думаю, что мне, вероятно, лучше провести мозговой штурм по лучшему пути... :S - person Jess; 29.11.2010
comment
Вышеупомянутое не слишком сложно. Это можно сделать с помощью вложенных операторов if, двух уровней в глубину (внешняя проверка того, был ли кандидат ранжирован или нет, внутренняя проверка того, является ли положительный nowRank). С JS код будет в функции, которую вы зарегистрируете как обработчик кликов для элементов списка кандидатов. Есть и другие, возможно, более изящные способы, но вложенных if должно быть достаточно. - person outis; 29.11.2010