|
|
 13.4 Кб |
|
|
для: selma
(09.02.2012 в 03:33)
| | Странно... написал я вам, что надо сделать изменения во всех 3 (трёх) последних функциях.
И даже эти функции перечислил - TEST_rng, TEST_txt, TEST_rd
И сделал я эти изменения.
У себя.
И проверил.
И всё работает (у меня).
Пообещался я вам здесь выложить изменённый код всех этих трёх функций.
А выложил почему-то всего две.
Как раз код изменённой функции TEST_rng, коя отвечает за ранжирование, я почему-то и не выложил... :-((
См. в аттаче/приложении трётью версию всего кода :-) | |
|
|
|
|
|
|
|
для: АЯС
(08.02.2012 в 12:05)
| | Уважаемый АЯС, лишнии пробелы исчезли, все кроме после RADIO
и есди сделать
visibility = 'hidden'} //4. Создаём шаблон SPAN'а для вывода сообщения об ошибке заполнения
|
то в ранжировании не выводятся никакие сообщения об ошибках | |
|
|
|
|
 1.6 Кб |
|
|
для: selma
(08.02.2012 в 10:31)
| | Спаны (и под полем <TEXTAREA>, и под группой радиокнопок, и справа от каждого рангового инпута) - они не пустые, изначально в них помещён неразрывный пробел.
И сделано это специально, потому как если их изначально "убрать" и создавать только при сообщениях об ошибке (и удалять, когда ошибка исправлена), то под них будет динамически выделяться/удаляться "место", что приведёт к дёрганью страницы по высоте и ширине.
Если для вас очень критично визуальное наличие пробелов на странице, то решить можно - всем "пробельным" спанам надо дать "невидимость".
В коде это будут следующие изменения:
with (spn.style) {fontSize = '9pt'; color = 'red'; visibility = 'hidden'} //4. Создаём шаблон SPAN'а для вывода сообщения об ошибке заполнения
|
И во всех трёх последних функциях (TEST_rng, TEST_txt, TEST_rd) надо найти строки, где есть innerHTML и там добавить изменение видимости.
Первое изменение сделайте сами - добавьте выделенное жирно в соответствующую строку.
Текст трёх последних функций с этими изменениями прилагаю в аттаче.
------
Разумеется, можно не резервировать место под эти спаны, а "накладывать" их поверх существующего слоя. Тогда все DIV'ы c <TEXTAREA> и радиокнопками можно уменьшить по высоте на высоту этого самого спана.
Если очень надо - напишите. Позже сделаю. | |
|
|
|
|
|
|
|
для: АЯС
(08.02.2012 в 10:18)
| | Верх мастерства!!! И правда, в ИА не проверяла:(
нашла еще кое что, влияющее на css, под полем textarea и radio всегда присутствует пустой span, можно его как нить убрать, а использовать только для ошибок? | |
|
|
|
|
 12.8 Кб |
|
|
для: selma
(08.02.2012 в 09:11)
| | Поторопились вы :-)
Я же просил "покрутить".
В общем, в MSIE код не работает.
Необходимы ДВА изменения.
-----------------------------------------
ПЕРВОЕ: вместо переписывания типа кнопки надо создавать новую, а существующую удалять.
Изменение следующие: строки с комментариями 19 и 20 удаляем. Вот эти:
//НАДО УДАЛИТЬ 5 строк
el [j].type = 'button'; //19. Переделываем тип кнопки сабмита на button
if (window.addEventListener)
el [j].addEventListener ('click', TEST_sbmt, false);
else el [j].attachEvent ('onclick', TEST_sbmt, false); //20. Навешиваем на кнопку "Отправить" функцию итоговой проверки
//НАДО УДАЛИТЬ 5 строк
|
Вместо них надо прописать:
//НАДО ПРОПИСАТЬ вместо удалённого
var btn = document.createElement ('input');
btn.type = 'button'; btn.value = 'Отправить';
el [j].parentNode.insertBefore (btn, el [j]); //19. Создаём кнопку типа 'button' и прописываем её перед кнопкой сабмита
if (window.addEventListener)
btn.addEventListener ('click', TEST_sbmt, false);
else btn.attachEvent ('onclick', TEST_sbmt, false); //20. Навешиваем на эту кнопку функцию итоговой проверки
el [j].parentNode.removeChild (btn.nextSibling); //20а. Удаляем кнопку сабмита
//НАДО ПРОПИСАТЬ вместо удалённого
| -----------------------------------------
ВТОРОЕ: спан в DIV'e под <TEXTAREA> надо создавать ДО назначения функции проверки самому <TEXTAREA>.
Изменение следующее - надо трём строкам с комментарием 10.1. изменить место в коде и прописать их сразу после строки с комментарием 10.4., вот так:
if (obj [j].getElementsByTagName ('textarea').length) //9. Определяем тип вопроса в DIV'е
{ //10. Если тип - "текстовое поле", то:
var t = obj [j].getElementsByTagName ('textarea') [0];
if (window.addEventListener)
t.addEventListener ('input', TEST_txt, false);
else t.attachEvent ('onpropertychange', TEST_txt, false); //10.1. назначаем ему функцию проверки "на лету"
T_txt [T_txt.length] = t.id = 'tTX' + (j + 1); //10.2. присваиваем ему технический ID и запоминаем его в массиве
var x = spn.cloneNode (1); x.id = 'tSP' + (j + 1); //10.3. Присваиваем SPAN'у для вывода сообшений об ошибке технический ID
obj [j].appendChild (x); //10.4. Добавляем этот SPAN в самый низ DIV'a
if (window.addEventListener)
t.addEventListener ('input', TEST_txt, false);
else t.attachEvent ('onpropertychange', TEST_txt, false); //10.1. назначаем ему функцию проверки "на лету"
}
|
Теперь будет работать и в MSIE.
PS. На всякий случай исправленную версию помещаю в аттач. | |
|
|
|
|
|
|
|
для: АЯС
(08.02.2012 в 07:44)
| | Вы просто мега-гуру:) аплодировали стоя.
Все отлично работает, без нареканий, данные отправляет на сервер без потерь, CSS сделала свой, с этим проблем нет.
Огромное вам человеческое спасибо. Вы очень выручили меня | |
|
|
|
|
 12.6 Кб |
|
|
для: selma
(07.02.2012 в 02:05)
| | Решение - в аттаче (изображение синей дискетки справа сверху) ===============>
СНАЧАЛА покрутите по-всякому именно ТОТ код, который я вам даю КАК ОН ЕСТЬ ("AS IS").
С точки зрения только и именно его функциональности и удобства.
Если возникнут вопросы/пожелания по моему коду - не стесняйтесь.
-----
А уже ПОТОМ прикиньте применимость этого кода к вашей вёрстке и к вашим нюансам (кои мне неизвестны).
Вполне может быть, что вас что-то не устроит в выбранном мною стиле оформления.
Или что-то где-то может быть надо расположить не так, и не в том месте...
Может, будут какие-то программные конфликты моего кода с вашим - вдруг у вас внутри формы много-много DIV'ов и SPAN'ов, да ещё вдруг и с совпадающими с выбранными мною ID - и мой код как-то влияет на них...
Также не стесняйтесь, спрашивайте.
Всё можно решить. | |
|
|
|
|
|
|
|
для: АЯС
(06.02.2012 в 14:08)
| | Это будет просто: замечательно
Заранее огромное спасибо, за потраченое на меня время. Буду ждать с нетерпением:) | |
|
|
|
|
|
|
|
для: selma
(06.02.2012 в 10:20)
| | >"не удобно тыкать каждый раз на "зафиксировать ответ"...
Была идея использовать Jquery для проверки поля на лету, но за незнанием матчасти, в дебри лезть вообще нет смысла. Вы согласны?"
Jquery точно не нужен - с этим я согласен :-)
Насчёт "не тыкать кнопкой" и "на лету" есть следующее соображение.
Можно те самые DIV'ы, о которых я написал выше, использовать как индикатор.
А именно:
1. изначально все DIV'ы прозрачны, т.е. сливаются с фоном.
2. как только юзер приступает к ответам на этот вопрос ("входит" в <textarea>, жмёт радиокнопку, начинает ранжировать) сразу включается проверка "на лету", коя завершается в момент, когда юзер переходит к другому DIV'у..
3. по итогам проверки - если ошибок заполнения нет, то цвет фона этого конкретного DIV'а заменяется на какой-то неяркий - бледно-зелёный, например. А вот если что-то заполнено не так - цвет становится вызывающе ярким, типа красного и внутри этого же DIV'a пишется сообщение об ошибке. Вернулся юзер к заполнению этого ошибочного вопроса - проверка вновь включилась.
Соответственно, если юзер просто "вошёл" в <textarea> и вышел из него, ничего не написав (или ткнул в поле ранга, но прописывать ничего не стал), то цвет остаётся начальным (прозрачным).
3. В итоге, по окончании, когда юзер кликнет на кнопку "Отправить результаты", ему высветится сообщение типа такого:
Вы допустили несколько ошибок заполнения.
Те вопросы, в которых Вы не заполнили текстовое поле (или не отметили радиокнопки) - подсвечены жёлтым цветом.
Те вопросы, в которых Вы произвели ранжирование с использованием повторяющихся или недопустимых цифр, выделены синим цветом.
Исправьте ошибки - подсветка вопроса при правильном заполнении должна стать зелёной.
|
Так нормально будет? :-)
Определяйтесь и я вам быстренько набросаю код.
Что касается "количества вопросов" - то никаких проблем нет. Хоть три, хоть триста тридцать три.
Хоть все одного типа, хоть - всех трёх.
-----
>"Можно как-то связаться с вами через ICQ или Skype?"
Нельзя, не пользуюсь.
Только через мыло, если надо - bes2002_шавкаlist.ru | |
|
|
|
|
|
|
|
для: АЯС
(06.02.2012 в 07:55)
| | Ещё вопрос к вам. Количество чисел, расставляемых юзером по рангу, оно гарантированно меньше 10 (десяти)
- Определенно до 10
Конечно ваше предложение правильное с техниеской стороны, но со стороны пользователя, опять же не удобно тыкать каждый раз на "зафиксировать ответ".
Поэтому лучше одной кнопкой - "Сохранить результат".
И ошибки все тоже в один алерт можно писать. Думаю больше 10-15 вопросов в 1 тесте (опросе) не будет
Была идея использовать Jquery для проверки поля на лету, но за незнанием матчасти, в дебри лезть вообще нет смысла. Вы согласны?
Итак, кол-во рангов до 10, вариантов тоже думаю до 10
Главное чтобы было возможно создавать N-ное кол-во вопросов с N-ным количеством однотипных (варианты, ранги, текстарии) ответов
Это осуществимо?
P.S: Можно как-то связаться с вами через ICQ или Skype? | |
|
|
| |
|