Показать сообщение отдельно
  #6 (permalink)  
Старый 21.02.2009, 02:00
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Bogus,
Тогда вы делаете неправильно. Дело в том, что JavaScript, в отличии от php, должен работать динамически. Т.е. работать, основываясь на событиях, происходящих в браузере, и изменять состояние уже сформированного документа.

Поэтому, вы не должны писать код "последовательно" и использовать конструкцию document.write, вы должны установить обработчик события submit формы, которое будет устанавливать необходимое значение hidden поля.

Вот один из примеров такой работы, просто я не смог вашу задачу понять до конца, поэтому не точно её решение:
<script type="text/javascript">
	// Описываем функцию, которая будет выполняться
	// при отправке формы:
	// form - ссылка на форму
	// filters - хеш фильтров и параметров
	function addFilters(form, filters) {
		// Получаем элемент нашего "фильтра"
		var filter_query = document.getElementsByName("filter")[0];
		
		// Очищаем:
		filter_query.value = "";
		
		// "Аналог" foreach из php:
		for (var i in filters) if (filters.hasOwnProperty(i)) {
			// Получаем фильтр по имени (первый элемент с таким именем):
			var filter = document.getElementsByName(i)[0];
			// Лучше делать проверку, что выбран не первый вариант:
			if (filter.selectedIndex > 0) {
				// Теперь добавляем нужный нам "параметр":
				filter_query.value += filters[i];
			}
		}
	}
</script>

<!-- 
	В форме указываем наш обработчик , первый параметр - форма,
	второй - хеш, в котором ключи - имена фильтров, а значения - 
	добавляемый в запрос параметр:
-->
<form method="get" onsubmit="addFilters(this, {'filter1':'and1', 'filter2':'and2'})" action="./dir.php">
        <div align="left">Новая характеристика 1</div>
            <SELECT name="filter1" style="margin-top: 5px;">
              <option style="color: #AAAAAA" value="0">Выбрать »</option>
              <option value="1">1!</option>
              <option value="2">2!</option>
              <option value="3">3!</option>
            </SELECT>
			
            <SELECT name="filter2" style="margin-top: 5px;">
              <option style="color: #AAAAAA" value="0">Выбрать »</option>
              <option value="1">1!</option>
              <option value="2">2!</option>
              <option value="3">3!</option>
            </SELECT>
    <br>
    <input type="hidden" name="filter" value="" />
    <input type="submit" value="Искать">
</form>
Ответить с цитированием