как связать Smarty и javascript

_Leonchik_

Новичок
как связать Smarty и javascript

привет.
как связать Smarty и javascript, если это вобще возможно.

или как можно узнать значение выподающего списка на смарти, кот. выбрал пользователь? что бы не перегружать страницу лишний раз, т.к. от выбора пользователем из списка надо еще много чего сделать на странице(показать др. список, txtполе), прежде чем скинуть данные в пхп.

вот например список, кот. заполняется из массива.
<SELECT id="Select1" name="bloc">
{foreach from=$BLOC item=b}
<OPTION value="{$b}">{$b}</OPTION>
{/foreach}
</SELECT>
после выбора, надо показать др. список. Как при помощи смарти добраться до выбранного значения из списка?

-~{}~ 06.02.06 17:20:

еще вопрос:

<SELECT id="Select1" name="bloc">
{foreach from=$BLOC item=b}
<OPTION value="{$b}">{$b}</OPTION>
{/foreach}
</SELECT>
Как в OPTION value засунуть индекс массива, а не значение?
 

netklon

Новичок
Smarty - это движок шаблонов на РНР. Передавать ему данные яваскриптом невозможно.

Если тебе надо в зависимости от событий Javascript подгружать данные с сервера - копай в сторону XMLHttpRequest.
 

MajestiC

Пых
При помощи смарти - никак. А вот через JavaScript можно. Тут тебе надо видеть разницу между Server-Side и Client-Side языками.
 

_Leonchik_

Новичок
функции на смарти можно создавать?

нашел на сайте от Смарти, register_function, но не как не пойму куда ее надо сунуть, и для чего.
Можно ли создавать свои фукции для своих потребностей?
 

MajestiC

Пых
Пойми, через смарти только генерируется HTML страница и отсылается на браузер пользователя.
Тут тебе нужен JavaScript.

А насчет индекса :
<SELECT id="Select1" name="bloc">
{foreach from=$BLOC item=b key=c}
<OPTION value="{$c}">{$b}</OPTION>
{/foreach}
</SELECT>
 

_Leonchik_

Новичок
но не буду же я после выбора каждого элемента из списка, отсылать форму на сервер для обработки.

таких списков около 5-ти, причем они должны менятся в зависимости от выбора первого или любого другого, +несколько тектовых полей.

а заполнить одно текстовое поле данными с отсылкой на сервер после каждого выбора из списка - это муторно, и не удобно.
 

MajestiC

Пых
Ну так насоздавай в JavaScript массивов, заполни их данными списков, и заполняй ими списки когда юзер что-нибудь выберет в нужных списках.
Просто на каждый select вешаешь на событие onchange функцию которая заполняет остальные списки из массивов.
 

_Leonchik_

Новичок
массивы заполняет пхп из базы, и передает их смарти.
дальше яваскрипт может получить данные из списка + те данные кот. выбрал пользователь, и установить др. списки со значениями.
такой вариан возможен?
 

MajestiC

Пых
Смутно понял твое описание, но похоже что да =) Есть пару комментов :

"может получить" = уже получил через php+smarty
" + те данные кот. выбрал пользователь" = сработало событие onchange когда юзер выбрал что-то в списках.

В итоге php отдаст сформрованную smarty страницу где будет содержатся код примерно такого вида:

PHP:
<html>
<script>
  // тут будет заполнение массивов
  function func1()
  {
     // тут будет JS код который заполнит список sel2 из массива в зависимости от выбранного элемента в sel1
  }
</script>
<body>
  <select name="sel1" id="sel1" onchange="func1()">
      <option value="1">Пункт 1</option>
  </select>
  <select name="sel2" id="sel2">
  </select>
</body>
</html>
 
Сверху