Программирование => JavaScript & JScript => Тема начата: Forza от 05 Июля 2004, 18:45:26
Название: JavaScript с этим справится?
Отправлено: Forza от 05 Июля 2004, 18:45:26
До сего момента писал на Перле, а из ДжаваСкрипт использовал примитивные вещи типа window.open(). Сейчас появилось 2 момента, которые на Перле не реализуемы (это точно так, да?).
1. Во-первых, надо сделать что-то типа похожее на использование адресной книги в почтовом веб-интерфейсе. Т. е. есть форма с текстовыми полями. По нажатию на одну из кнопок открывается новое окно (адресная книга), в котором можно выбрать что-либо (адресата). После закрытия этого окна в старом окне должно измениться содержимое одного из текстовых полей. Нельзя в этом случае посылать первому окну команду перехода на новый url, в параметрах которого был бы адресат, выбранный из второго окна, т.к. в этом случае не сохранятся значения, которые пользователь ввёл вручную в другие текстовые поля (например, написал "Тему"). Или их как-то можно сохранять?
2. Второй момент похожий. Например, есть список хранящий подразделения предприятия. Надо чтобы при выборе подразделения в соседний список помещались люди из этого подразделения. По-моему, для этого нельзя использовать параметр onchange для тега
Название: JavaScript с этим справится?
Отправлено: alm от 06 Июля 2004, 08:37:12
Все что вам нужно это найти соответсвующее поле формы и присвоить ей значение.
Название: JavaScript с этим справится?
Отправлено: Forza от 06 Июля 2004, 12:30:06
Да, я не спорю, что для разбирающегося в JS - это просто. :) Но просто тупо копировать вышенаписанное в свой код не хочу. Раз ДжаваСкрипт справится с такой задачей, что посоветуешь почитать в Инете или из книг, где бы JS описывалась начиная с азов?
А вот такое можно будет провернуть? Похожее на второй вариант: В списке выбираем элемент, и в зависимости от выбора в этом же окне рядом получаем либо текстовое поле для ручного ввода данных, либо список с определённым набором элементов.
Название: JavaScript с этим справится?
Отправлено: Mog. от 06 Июля 2004, 16:18:08
Можно А начать можно с http://forums.webscript.ru/showthread.php?s=&threadid=4583&msgnum=3
Название: JavaScript с этим справится?
Отправлено: Forza от 10 Июля 2004, 15:34:01
alm, ок, я разобрался, как менять набор значений во втором списке при смене выбранного элемента в первом списке без полного рефреша окна. Теперь задача усложняется. Вопрос, возможно ли динамически подгружать во второй список значения из MySQL-базы. То есть после выбора элемента из первого списка к MySQL пошёл запрос, и без обновления окна во второй список загрузился набор элементов на основе результатов этого запроса. Не хочется заранее выбирать из MySQL все возможные наборы данных, связанные с каждым элементом первого списка. Пока на ум приходит только экзотика типа вставки через SSI странички, формируемой Перлом и состоящей из одного select-списка (ну или фреймы).:insane:
И второй момент, с которым я полностью не определился: какие свойства объектов текстового поля и списка лучше использовать, чтобы после выбора элемента из списка №1, рядом с ним в форме появлялся либо список №2, либо текстовое поле.
Название: JavaScript с этим справится?
Отправлено: Mog. от 11 Июля 2004, 07:52:55
Цитировать
Forza: и без обновления окна
Цитировать
Forza: Не хочется заранее выбирать из MySQL все возможные наборы данных, связанные с каждым элементом первого списка.
А вот это не получится. Если у тебя оба элемента в одном окне(фрейме, ифрейме).
Название: JavaScript с этим справится?
Отправлено: Forza от 11 Июля 2004, 18:19:24
Цитировать
Mog.: А вот это не получится.
Mog., хорошо, а как тогда лучше поступить? Повторю задачу: есть форма, в которой некоторые поля для ручного заполнения юзером, а также есть списки - при этом хорошо бы подгружать данные в список №2 на основе выбора элемента из списка №1. Изначально было 2 варианта: а) "динамически" обращаться к базе, обновляя с помощью JavaScript только один элемент формы (список №2), но ты сказал, что так нельзя (и даже нельзя сделать SSI-вставку, состоящую только из списка №2?), б) сделать для списка №1 onchange="window.location=(\'...\'), где в URL передавать параметр для второго списка, но как тогда сохранить те данные, которые пользователь ввёл в текстовые поля??? Если второй вариант не подходит, то я вижу следующий выход: после выбора элемента списка №1 откроется новое окно, в котором юзер выберет что-то из списка №2, и после закрытия нового окна выбранный элемент из списка №2 окажется в первом окне. Т.е. к базе обращение будет идти только из нового окна(пример - адресная книга на почте Яндекса). Могут быть какие-нибудь другие варианты?
Название: JavaScript с этим справится?
Отправлено: Forza от 11 Июля 2004, 18:31:53
Цитировать
Forza: б) сделать для списка №1 onchange="window.location=(\'...\'), где в URL передавать параметр для второго списка, но как тогда сохранить те данные, которые пользователь ввёл в текстовые поля???
Я тут подумал, а ведь можно в onChange для списка вызывать функцию, которая обойдёт все поля формы и запишет их значения в URL, да? Попробую-ка я это осуществить. ;) Но всё равно если есть другие варианты реализации, будет очень интересно про них узнать.
Название: JavaScript с этим справится?
Отправлено: alm от 12 Июля 2004, 04:54:44
Для этих целей можно создать на странице служебный
Название: JavaScript с этим справится?
Отправлено: Forza от 12 Июля 2004, 11:14:49
Классная идея! Спасибо. Попробую её реализовать. Но если что, я вернусь. ;)
Название: JavaScript с этим справится?
Отправлено: Forza от 12 Июля 2004, 15:43:56
Я вернулся. :)
Каким образом из обратиться к полям формы за пределами этого ? Везде в примерах написано, как передавать параметры между именованными внутри
Название: JavaScript с этим справится?
Отправлено: Forza от 12 Июля 2004, 16:44:26
Методом тыка сработал вариант window.parent.document.myForm.myTextField.value. Где можно почитать про все эти базовые объекты типа window, parent, document, чтобы сознательно с ними работать, а не тыком?
Название: JavaScript с этим справится?
Отправлено: alm от 13 Июля 2004, 04:26:08
С iframe работаете также как и с обычными frame. Про фреймы можете почитать здесь