Автор Тема: и снова формы  (Прочитано 4998 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
и снова формы
« : 08 Сентября 2002, 18:59:37 »
Описание проблемы:
Есть динамически генерируемая перл-скриптом форма, состоящая сугубо из групп радио и чекбуттонов (единственный и множественный выбор).
Количество групп заранее не известно.
Вариантов выбора в одной группе не больше пяти не меньше двух.
Как написать скрипт, проверяющий простое заполнение всех групп (в каждой группе должна быть выбрана хоть одна позиция).
Вообще я сейчас пишу, верне уже написал, перл-скрипт-тестирование. А ява-скрипт нужен для того, чтобы избавить тестируемых от обидных ошибок.
Т.е. сам яваскрипт может тоже генерироваться в зависимости от колличества групп!
Я попробывал сам написать, чего то не получилось:-). Совсем не получилось. Думал позаимствовать:-))). Никого эта трабл не мучила: смотрел большие анкеты, там везде, где есть радио или чек-бутоны, уже по умолчанию выбраны хоть какие нибудь значения, и соответственно проверка по их заполнению не производится.
Помогите плиз.
Ну к чему все это, лучше бы водки выпили...

Оффлайн USE

  • Любитель
  • Ветеран
  • *****
  • Сообщений: 720
  • +0/-0
  • 2
    • Просмотр профиля
и снова формы
« Ответ #1 : 08 Сентября 2002, 19:57:12 »
Цитировать
уже по умолчанию выбраны хоть какие нибудь значения, и соответственно проверка по их заполнению не производится


вообще-то так должно быть, как говорят специ по юзабилити. потому что неопытные могут не поянть, что надо проставлять галочки и т.п.
Не ходите, дети, без «Мозиллы» дальше localhost!

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
и снова формы
« Ответ #2 : 08 Сентября 2002, 20:03:24 »
Цитировать
вообще-то так должно быть, как говорят специ по юзабилити. потому что неопытные могут не поянть, что надо проставлять галочки и т.п.

USE, ты наверное не прочитал для чего мне это нужно,  Дело в том, что вопросов в среднем, в тесте будет штук 30, по итогам выставляется отметка. И плевать на юзабилити, если из-за неё эта отметка будет ниже.
Человек, отвечая на вопросы некоторые пропускает, оставляя (на потом), задача - ЯваСкрипта: напомнить юзеру, если он где-нибуджь не дал ответ, а не обманывать его неправильно расставленными флажками.
Ну к чему все это, лучше бы водки выпили...

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
и снова формы
« Ответ #3 : 08 Сентября 2002, 20:05:59 »
Кстати вот сырой вариант перл-скрипта:
http://www.glebushka.hut.ru/cgi-bin/test/test.cgi
ID: gleb
ФИО: всё что угодно, пока проверка не производится.
Это очень упрощённый вариант вопросов всего два (да и в базе их пять:-). Ограничение по времени 3 минуты.
Помогите плиз, оч.надо!
Ну к чему все это, лучше бы водки выпили...

Оффлайн aleandr

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 46
  • +0/-0
  • 0
    • Просмотр профиля
и снова формы
« Ответ #4 : 09 Сентября 2002, 15:01:43 »
Все равно же id radio-элемента ты даешь в цикле Перла.
Сделай массив в JS, равный числу id cо значением "0". При выборе radio-элемента изменяешь значение этого же элемента массива.
Ну а потом по SUBMIT через RegExp одной строчкой делаешь из массива строку и ищешь есть ли вхождение нуля.

Оффлайн aleandr

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 46
  • +0/-0
  • 0
    • Просмотр профиля
и снова формы
« Ответ #5 : 09 Сентября 2002, 15:07:09 »
Ну а если есть - событие SUBMIT отменяешь и говоришь какая группа не заполнена...

Оффлайн aleandr

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 46
  • +0/-0
  • 0
    • Просмотр профиля
и снова формы
« Ответ #6 : 09 Сентября 2002, 15:10:16 »
.

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
и снова формы
« Ответ #7 : 09 Сентября 2002, 16:35:26 »
Да вообще я в яваскрипт мало что понимаю...
Вот форма:

Вопрос 1:




Вопрос 2:








Создаю массивы:
spisok_id = = new Array("id1", "id2");
znacheniya_id = new Array("0", "0");
spisok_alertov= new Array("1", "2");

Есть функция, которая проверяет, есть ли нули в массиве znacheniya_id, и при первом же встреченном нуле выдат алерт-бокс (посмотри те верно ли она написана?)

function SendForm () {
var i, j;
for(j=0; jif (znacheniya_id[j] == 0) {
alert(\'Вы не ответели на \' + spisok_alertov[j] + \'вопрос!\');
return false;
}
}
return true;
}

Теперь у меня вопрос, каким образом изменять элементы в массиве znacheniya_id? Какое событие и как?  Вероятно нужно создавать ещё одну функцию, и добавлять её вызов в форму, к каждому тегу input? Расскажите поподробнее:-), для тупых;-), плиZZZ
Ну к чему все это, лучше бы водки выпили...

Оффлайн aleandr

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 46
  • +0/-0
  • 0
    • Просмотр профиля
и снова формы
« Ответ #8 : 09 Сентября 2002, 16:46:32 »
Ну код твой переделаем, но завтра!
Сейчас бегууууууу домой ;-)))
Завтра в 8.00 будет, а можа кто-нить раньше тебя поправит/поможет...

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
и снова формы
« Ответ #9 : 10 Сентября 2002, 00:01:12 »
aleandr, так никто и не помог, жду 8.00:-)
Ну к чему все это, лучше бы водки выпили...

Оффлайн aleandr

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 46
  • +0/-0
  • 0
    • Просмотр профиля
и снова формы
« Ответ #10 : 10 Сентября 2002, 08:12:06 »
Вот рабочий кусок в Перл.
Для каждого вопроса - один ответ.
Сделай без цикла или двойной, чтобы было больше вариантов ответов.
Также в массив arr можно сразу value выбранного элемента писать, а потом при SUBMIT присвоить этот массив какому-нить HIDDEN.


print <

EOF
foreach $i(1..5) {
  print <  Вопрос №$i
 

 
EOF
}
print <

EOF

Оффлайн aleandr

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 46
  • +0/-0
  • 0
    • Просмотр профиля
и снова формы
« Ответ #11 : 10 Сентября 2002, 08:26:21 »
Вот почти такой же без Перла - этот точно работает ;-))



1

2

3



1

2



1

2

3

4





Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
и снова формы
« Ответ #12 : 11 Сентября 2002, 00:39:44 »
СПАСИБО!!!
Второй вариант работает:-)
Первый не пробовал:-)
Сейчас спать хочется, уже третьи сутки пошли, а я спал часов 6:-). Завтра займусь внедрением в скрипт...
Ну к чему все это, лучше бы водки выпили...

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
и снова формы
« Ответ #13 : 23 Сентября 2002, 00:11:59 »
ещё трабл.
а как отследить событие, если юзверь поставил галочку (в массиве значения изменились, затем решил вдруг убрать галочку (значения в массиве, в данном варианте скрипта НЕ ИЗМЕНИЛИСЬ!!!), а заново поставить забыл?
Ну к чему все это, лучше бы водки выпили...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
и снова формы
« Ответ #14 : 23 Сентября 2002, 02:00:30 »
примерно так:
onclick = "someFunc(this, 1)"

....
function someFunc(obj, pos) {
if (obj.checked == true) {
arr[pos] = obj.value;
} else {
arr[pos] = 0;
}
}
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28