Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Struts и 2 selecta 
:(
    Опции темы
sergush
Дата 7.2.2006, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.12.2005

Репутация: нет
Всего: нет



Два взаимодействующих selectа. В одном что-то выбираешь, содержимое другого меняется. В книге(какой уже не помню) нашел такой пример:
Код

<html>
<script>
var products = new Array(3);
products[1] = new Array("Epson FX-1170","HP DeskJet 1125","Canon BJC 2100");
products[2] = new Array("Acer 1240UT","Acer 3300U","AGFA SnapScan E20","AGFA Arcus 1200");
products[3] = new Array("APC Back-UPS 500","APC Smart-UPS 1400","APC Symmetra 8kVA","BestPower Axxium 1500","BestPower Fortress III 1050E");

function updateProduct(){
var idx = document.frm.category.selectedIndex + 1;
document.frm.product.length = products[idx].length;
for(var i = 0; i < products[idx].length; i++){
    document.frm.product[i].text = products[idx][i];
}
}
</script>

<body>
<form name="frm">
    <table border=1>
        <tr>
            <td>Категория товара</td>
            <td>Товар</td>
        </tr>
        <tr>
            <td valign="top">
                <select name="category" size=4 onchange="updateProduct()">
                    <option selected>Принтер
                    <option>Сканер
                    <option>UPS
                </select>
            </td>
            <td>
                <script>
                    document.writeln("<select name='product' width='200'>")
                    for(var i = 0; i < products[1].length; i++){
                        document.writeln("<option>" + products[1][i]);
                    }
                    document.writeln("</select>");
                </script>
            </td>
        </tr>
    </table>
</form>
</body>

</html>


Во-первых: может у кого есть другой вариант. Этот в IE работает, а в Opera как-то криво "работает" (в других браузерах не пробовал).

Содержимое selectов берется из базы данных.
Теперь непосредственно к Java и struts: у кого-нибудь есть идеи как это реализовать с помощью тэгов struts?
Код

                        ?????????????????????????????
                            <html:select property="category" onchange="?????????????????????????????">
                                <html:options collection="categories" property="value" labelProperty="label" />
                            </html:select>
                        
                            <html:select property="product">
                              ?????????????????????????????
                            </html:select>
                         ?????????????????????????????

Добавлено @ 02:09
Можно оставить первый скрипт без изменений, а только заполнить массив данными. Тогда код будет такой. Но мне почему-то это кажется очень некрасивым.

Код

                           <html:select property="category" onchange="updateProduct()">
                                <html:options collection="categories" property="value" labelProperty="label" />
                            </html:select>

                            <html:select property="product">
                                <script>
                                    for(var i = 0; i < products[1].length; i++){
                                        document.writeln("<option>" + products[1][i]);
                                    }
                                </script>
                            </html:select>         

PM MAIL   Вверх
batigoal
Дата 7.2.2006, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Насколько я понимаю, Struts и Ява тут особо ни при чем, клиентскую логику сделать они не помогут.

А насчет кроссбраузерности - не нужно использовать document.writeln(). Я подобную задачу решал так: сервер генерит два JS-массива. А затем я по ним пробегаюсь в коде жаваскрипта, и заполняю select через его ID:
Код

document.getElementById('mylist').options[i] = 'element #'+i;

Это поддерживается всем браузерами.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
sergush
Дата 7.2.2006, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.12.2005

Репутация: нет
Всего: нет



"А насчет кроссбраузерности" поверим на слово. Struts тут точно ничем помочь не может? Может есть какой нибудь способ не писать напрямую JS-код, а обойтись тэгами struts, а уж они то пускай этот код сами генерируют?
Заполнение selecta через его ID тоже работает. Я так тоже пробовал. Но и в первом и втором случае в опере возникает небольшой "глюк". Когда количество элементов в selecte разное и надо менять length, то появляются какие-то лишние пустые строки. В IE же все нормально.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1154 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.