Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / CSP. Тег select multiple. Как получить все значения? / 7 сообщений из 7, страница 1 из 1
09.04.2009, 18:32
    #35923576
Erick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP. Тег select multiple. Как получить все значения?
У меня есть форма, на которой размещен объект <select multiple> и кнопка. Ну и два других селекта, с ними проблем нет.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
&html<<select multiple name=GetForms style="width:350;height:200">>
&sql(declare Subs cursor for select ID,Name into :ID,:Name from Report_Form.Form WHERE Name %STARTSWITH 'М' order by ID)
&sql(open Subs)
f  &sql(fetch Subs) q:SQLCODE  w "<option value='",ID,"'",$S(Sub=ID:" selected", 1 :""),">",Name,"</option>"
&sql(close Subs)
&html<</select>
<input type=button value="Сгенерировать XML" onClick="XMLExport();">
По нажатию кнопки вызывается функция JS.
Код: plaintext
1.
2.
3.
4.
5.
6.
<script language=JavaScript>
function XMLExport()
{
  #call(..XMLCreate(fxmlcreator.month.value,fxmlcreator.year.value,fxmlcreator.GetForms.value))#
}
</script>
Она вызывает метод класса XMLCreate.
Код: plaintext
1.
2.
3.
4.
ClassMethod XMLCreate(month,year,GetForms)
{
 
}
Если было выбрано несколько значений из списка, как получить все их значения? В моем случае передается только первое. В инете смотрел, но там в основном примеры для PHP, там это решается путем объявления имени select как массива.

Заранее благодарен.
...
Рейтинг: 0 / 0
10.04.2009, 08:37
    #35924059
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP. Тег select multiple. Как получить все значения?
Вопрос больше из области ХТМЛ+ЯваСкрипт...

авторДля объектов Select, допускающих возможность множественного выбора (то есть если тэг SELECT имеет атрибут MULTIPLE), свойство selectedIndex не очень подходит для использования. В этом случае оно возвращает индекс первого выбора. Чтобы найти все выбранные опции, Вы должны пройти циклом по опциям и проверить каждую опцию индивидуально. Например, чтобы напечатать список всех выбранных опций в selection-списке mySelect, Вы можете использовать такой код:

Код: plaintext
1.
2.
3.
for (var i =  0 ; i < mySelect.options.length; i++) {
   if (mySelect.options[i].selected)
      document.write(" mySelect.options[i].text\n")
}


Взято тут ...

А передавать в метод можно строкой через разделитель.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
10.04.2009, 09:32
    #35924127
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP. Тег select multiple. Как получить все значения?
Можно проще, так как в cspbroker.js уже написана соответствующая функция:
Код
Код: plaintext
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.
29.
30.
31.
32.
33.
34.
35.
36.
<html>

<head>

<script language="JavaScript" type="text/javascript">

  function XMLExport()
  {
    #call(..XMLCreate(cspGetSelectList(self.document.fxmlcreator.GetForms).join(',')))#
  }
  </script>

</script>

</head>

<form name="fxmlcreator">
  <select name="GetForms" multiple>
  <option value="10" selected>asd1
  <option value="20" selected>asd2
  <option value="40" selected>asd3
  </select>
  <input type="button" value="Сгенерировать XML" onClick="XMLExport();">
</form>

<hr>

<!-- Define a server-side method to process in-page events -->

  <script language="Cache" method="XMLCreate" arguments="test">
    s ^a=test
    Quit
</script>

</body>
</html>

Можно обойтись и без join , тогда переменная test будет массивом, то есть:
Код: plaintext
1.
2.
3.
4.
...
s ^a( 1 )=test( 1 )
s ^a( 2 )=test( 2 )
...
Код проверялся на Caché 2009.1.FT2
...
Рейтинг: 0 / 0
10.04.2009, 09:36
    #35924139
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP. Тег select multiple. Как получить все значения?
servit , т.е. в метод можно передать массив?
...
Рейтинг: 0 / 0
10.04.2009, 09:59
    #35924191
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP. Тег select multiple. Как получить все значения?
krvsa servit , т.е. в метод можно передать массив?
Получается, что - да. Причём тип переменной на её "массивность" не влияет.
...
Рейтинг: 0 / 0
10.04.2009, 10:13
    #35924229
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP. Тег select multiple. Как получить все значения?
Интересно... А как тогда "написать/описать" передачу JS массива? Просто сунуть в параметр его имя...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
10.04.2009, 13:02
    #35924794
Erick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CSP. Тег select multiple. Как получить все значения?
Большое спасибо, получилось.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / CSP. Тег select multiple. Как получить все значения? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]