Показать сообщение отдельно
  #21 (permalink)  
Старый 12.11.2019, 09:20
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

firsmember, вы задали очень хороший вопрос.

Сообщение от firsmember
Хочется получить введенные значения "на лету" и при нажатии на кнопку, сформировать собственно адрес по типу указанного выше и переадресовать человека на этой же странице по сформированному адресу
Форма именно так и работает, если вы не укажете у <form> атрибут action. (Т. е. произойдёт переход на эту же страницу, но с дополнительными параметрами)

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

Сообщение от firsmember
name='age_min' id='age_min' class='age_min'
Можно указать только name, именно оно определяет имя поля в форме, которое включается в запрос. Если нужно в стилях, то элемент определяется как [name=age_min]

Сообщение от firsmember
<option value="150">150</option>
Можно не указывать атрибут value, если значение поля и надпись в раскрывающемся списке одинаковы. Т. е. достаточно <option>150</option>

Сообщение от firsmember
type='text'
Можно не указывать, так как по умолчанию используется именно текст.

Сообщение от firsmember
Ума не приложу, как реализовать
Вот пример с учётом всего вышенаписанного... (Можно проверить в отдельной вкладке — https://charm-launch.glitch.me/form.html)
<form method="get" id="search-form">
	<input name="age_min">
	<input name="age_max">
	<select name="height_min">
		<option>150</option>
		<option>155</option>
		<option>160</option>
		<option>165</option>
		<option>170</option>
	</select>
	<select name="height_max">
		<option>150</option>
		<option>155</option>
		<option>160</option>
		<option>165</option>
		<option>170</option>
	</select>
	<select name="lang">
		<option>RUS</option>
		<option>USA</option>
	</select>
	<select name="country_40">
		<option>RUS</option>
		<option>USA</option>
	</select>
	<input name="keyword">
	<select name="per_page">
		<option>1</option>
		<option>4</option>
		<option>8</option>
		<option>16</option>
		<option>20</option>
		<option>40</option>
	</select>
	<input type="hidden" name="um_search" value="1">
	<button>Искать</button>
</form>
<script>
	const searchForm = document.getElementById("search-form");
	for(const [key, value] of new URL(location).searchParams) {
		const control = searchForm.elements.namedItem(key);
		if(!control) continue;
		control.value = value;
	}
</script>


Сообщение от firsmember
Просто вы меня лечите уже часа 4 наверное если не больше в этом направлении, а помочь вам 5 минут делов
Очевидно он не знает, как это сделать, поскольку даже приблизительно не было ответа касательно вашего вопроса о заполнении формы данными, вместо этого сначала идут вещи, о которых новичкам как-раз таки нужно рассказывать, а не задавать им вопросы, а затем оскорбления.

Последний раз редактировалось Malleys, 12.11.2019 в 13:29. Причина: Исправил форму глагола прошедшего времени.
Ответить с цитированием