Официальный сайт студ.городка НГТУ
Программирование и БД » javascript, помогите доработать 

#1  20.03.08 17:22

javascript, помогите доработать

Вот этот код позволяет перемещаться на задаваемые страницы посредством выбора какого-либо пункта из выпадающего меню:

Код: html:

<SELECT NAME="navSelect"
  ONCHANGE="top.location.href =
    this.options[this.selectedIndex].value">
  <OPTION>Выборите язык</OPTION>
  <OPTION VALUE="rus.html">русский</OPTION>
  <OPTION VALUE="eng.html">английский</OPTION>
  <OPTION VALUE="fra.html">французский</OPTION>
</SELECT>

нужно как-то изменить его так, чтобы при выборе какого-либо <option> мы не перемещались бы на страницу с конкретным адресом, а оставались на той, на которой находимся (с не зафиксированным адресом), но при этом через ? передавался бы некий параметр.

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

а предназначен код (по замыслу) для передачи запрашиваемым скриптам переменной с выбранным юзером языком (англ, рус или френч).

помогите пожалуйста.

Исправлено grozzzzza (21.03.08 11:43)

Offline

#2  20.03.08 17:46

Re: javascript, помогите доработать

без аякса никак.

Offline

#3  20.03.08 18:03

Re: javascript, помогите доработать

Остап, прям...

grozzzzza, убири событие onchange у select, добавь кнопку :

Код: html:

<input type="button"
value="Change"
onclick="top.location.href='header.php?val='+this.form.navSelect.options[this.form.navSelect.selectedIndex].value">


можно канешь это дело и в onChange сразу орабатывать...

Исправлено Jaguar (20.03.08 18:04)

Offline

#4  20.03.08 19:19

Re: javascript, помогите доработать

ну не - с кнопкой неинтересно... )

более конкретно сформулирую задачу: нужна такая конструкция  javascript которая при событии onChange перезагружает текущую страницу и передает некий параметр через "?"

или как это же реализовать на php.

Offline

#5  20.03.08 19:36

Re: javascript, помогите доработать

grozzzzza, смотри код в onClick... через php вставляй имя текущего скрипта...

Offline

#6  20.03.08 19:55

Re: javascript, помогите доработать

Jaguar, что-то не работает.

Код: html:

<table border="0" width="250" id="table1">
<tr>
  <td width="150" align="left"><b>Select language:</b></td>
  <td width="100" align="justify">
     <select class="input" name='lang' ONCHANGE="top.location.href =
             'header.php?
                 lang='+this.form.navSelect.options
                            [this.form.navSelect.selectedIndex].value">
          <option value="index.php?lang=rus"
              <?php  if ($lang=="rus") echo "selected"; ?> >Russian
          <option value="index.php?lang=eng"
              <?php  if ($lang=="eng") echo "selected"; ?> >English
     </select></td>
</tr>   
</table>

может что с синтаксисом не так? я в яваскрипте вообще слабоват. а вообще задумка правильная, думаю. сразу не оценил)

Исправлено grozzzzza (21.03.08 11:42)

Offline

#7  20.03.08 20:06

Re: javascript, помогите доработать

всё, нашел. нужно
this.form.navSelect.options[this.form.navSelect.selectedIndex].value
заменить на
this.options[this.selectedIndex].value

дальше уже дело техники.
Jaguar, спасибо!
как всё просто оказалось)

Offline

#8  20.03.08 21:07

Re: javascript, помогите доработать

или я тупой, или у тебя получается header.php?lang=index.php?lang=rus
%)

Offline

#9  20.03.08 22:07

Re: javascript, помогите доработать

wixus,

Код::

<option value="index.php?lang=rus"
<?php  if ($lang=="rus") echo "selected"; ?> >Russian
<option value="index.php?lang=eng"
<?php  if ($lang=="eng") echo "selected

нужно заменить на

Код::

<option value="rus"
<?php  if ($lang=="rus") echo "selected"; ?> >Russian
<option value="eng"
<?php  if ($lang=="eng") echo "selected"; ?> >English

Offline

#10  20.03.08 22:11

Re: javascript, помогите доработать

Jaguar написал(а):

через php вставляй имя текущего скрипта...

можешь поподробней объяснить как? не могу допетрить что-то...
можно конечно в исходном файле объявлять переменную с именем этого файла, которая потом будет обрабатываться инклудящимся скриптом.
но учитывая то, что исходных файлов будет много, как-то это нерационально.
короче, нужна функция, возвращающая в инклудящийся скрипт имя файла, вызывающего его. наверняка должна быть такая.

Offline

#11  21.03.08 00:54

Re: javascript, помогите доработать

Код: php:

__FILE__

Offline

#12  21.03.08 01:19

Maq
Профиль

Re: javascript, помогите доработать

Jaguar, grozzzzza, чет у вас не xhtml-валидный код :)

Offline

#13  21.03.08 09:16

Re: javascript, помогите доработать

Maq, подумаешь) валидация не обязательный аттрибут

Offline

#14  21.03.08 11:13

Re: javascript, помогите доработать

Jaguar, не понял что означает твое сообщение, но на русфорумз подсказали решение.

Код: javascript:

ONCHANGE="top.location.href =
    'index.php?lang='+this.options[this.selectedIndex].value


заменить на

Код: javascript:

ONCHANGE="top.location.href =
    document.location.pathname +'?lang='+this.options[this.selectedIndex].value

Исправлено grozzzzza (21.03.08 11:13)

Offline

#15  21.03.08 12:26

Re: javascript, помогите доработать

grozzzzza написал(а):

Jaguar, не понял что означает твое сообщение

grozzzzza написал(а):

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

Jaguar написал(а):

Код: php:

__FILE__

__FILE__ - это предопределенная константа, которая содержит полный путь и имя текущего файла...

Код: php:

<?php
echo basename(__FILE__);
?>


grozzzzza написал(а):

document.location.pathname

- это получение полного урл скрипта средствами JS... чего выбирать - тебе решать... :)

Offline

#16  21.03.08 13:02

Re: javascript, помогите доработать

понял, спасибо.
думаю, что раз уж при решении задачи в целом всё равно без JS не обойтись, то без разницы. Так ведь?

Offline

#17  21.03.08 14:57

Re: javascript, помогите доработать

grozzzzza, в принципе так

Offline

Программирование и БД » javascript, помогите доработать 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.215 сек.
Выполнено 14 запросов.