Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как сделать пункт в выпадающем списке по умолчанию, после перехода по ссылке? (https://javascript.ru/forum/dom-window/31140-kak-sdelat-punkt-v-vypadayushhem-spiske-po-umolchaniyu-posle-perekhoda-po-ssylke.html)

Damian 28.08.2012 12:19

Как сделать пункт в выпадающем списке по умолчанию, после перехода по ссылке?
 
Добрый день.
Есть форма со списком select. В ней несколько пунктов option. При переходе по ссылке с другой страницы необходимо делать так, чтобы выбирался нужный пункт автоматически (по умолчанию).
К примеру, есть список
- Кот
- Кошка
- Динозавр.
При переходе с главной страницы по ссылке, например, "Кошка", в списке было выбрано
- Кошка.
И т.д.
Как это сделать? Заранее спасибо.

Deff 28.08.2012 12:21

Цитата:

Сообщение от Damian
Как это сделать? Заранее спасибо.

Анализируете -и сравниваете скриптом свои ссылки в списке с адресом текущей страницы - её и делаете активной

Damian 28.08.2012 12:25

ммм.. Спасибо, а можно поподробнее?

Deff 28.08.2012 12:45

var testLnk = location.href;
далее ищите свою ссылку в списке - делайте попытки -выкладываете минимальное HTML и скрипты - Вам помогут

lord2kim 28.08.2012 12:48

Damian, предположим вы на странице http://domain.ru/?cat
window.onload = function () {
    var opt = (window.location.search).replace("?", "");
    var select = document.getElementById("id вашего select").options;
    for (i=0; i < select.length; i++) {
        if (select[i].value == opt) { break; }
    }
    document.getElementById("id вашего select").selectedIndex = i;
}

http://javascript.ru/window-location

Damian 28.08.2012 13:39

Мягко говоря, я не очень хорошо разбираюсь в JavaScript :cray:
Не могли бы вы, если не затруднит конечно, дополнить мой код нужным?

Ссылка на главной странице:
<a href="http://site/forma">Собаченька</a>

Форма на внутренней:
<select>
<option>Собаченька</option>
<option>Котэ</option>
</select>

lord2kim 28.08.2012 13:46

Damian, в ссылку еще что-нибудь нужно добавить, типа
<a href="http://site/forma?dog">Собаченька</a>

тогда
window.onload = function () {
    var opt = (window.location.search).replace("?", "");
    var select = document.getElementById("sel").options;
    for (i=0; i < select.length; i++) {
        if (select[i].value == opt) { break; }
    }
    document.getElementById("sel").selectedIndex = i;
}


<select id="sel">
<option value="dog">Собаченька</option>
<option value="cat">Котэ</option>
</select>


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

Damian 28.08.2012 14:17

Что-то не работает(((
У меня статичная форма с неизменяемыми полями. Перед ней я поставил
window.onload = function () {
    var opt = (window.location.search).replace("?", "");
    var select = document.getElementById("sel").options;
    for (i=0; i < select.length; i++) {
        if (select[i].value == opt) { break; }
    }
    document.getElementById("sel").selectedIndex = i;
}


Но, перейдя по ссылке, список остаётся как есть.

Damian 28.08.2012 14:17

Полагаю, что я вообще всё не так сделал?

lord2kim 28.08.2012 14:26

Damian, скрипт можете поместить в любом месте страницы, не забывая его заключать в теги <script></script>
вы ссылку(-и) и ниспадающий список поправили в соответствии с постом №7?

bes 28.08.2012 14:40

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

Damian 28.08.2012 14:47

Прошу прощения. Оказывается всё работает. Во всяком случае на локалке. Это на сервере я что-то напутал.
Спасибо огромное за помощь:)

bes 28.08.2012 14:56

Держи ещё один вариант
<select id="sel">
	<option value="main">главная</option>
	<option value="learn">учебник</option>
	<option value="forum">форум</option>
</select><br>

<a href="http://javascript.ru" target="blank" id="0">главная</a><br>
<a href="http://learn.javascript.ru/" target="blank" id="1">учебник</a><br>
<a href="http://javascript.ru/forum/" target="blank" id="2">форум</a>

<script>
window.onload = function () {
	var sel = document.getElementById('sel');
	document.body.onclick = function (e) {
		e = e || event;
		var target = e.target || e.srcElement;
		if (target.tagName == 'A') {
			sel.selectedIndex = target.id;
		}
	}
}
</script>

Damian 28.08.2012 15:16

И ещё раз большущее спасибо))) :)

Damian 05.09.2012 10:58

Добрый день. Вопрос аналогичный этому, посему решил прям здесь задать.
Нужно сделать так, чтобы при переходе по ссылке с одной страницы на форму другой страницы, в форме выбирался нужный чекбокс.
Переходим по ссылке "Собаченька" на страницу с формой, а там чекбокс стоит на собаченьке.
Как бы это реализовать? Заранее спасибо.

bes 05.09.2012 11:28

так пусть на этой странице этот чекбокс и стоит по умолчанию чекнутым

lord2kim 05.09.2012 11:29

Damian, или если загружается по ссылкам (Собаченька, Котэ и т.д.) одна и та же страница, то как то так
<select id="sel">
<option value="dog">dog</option>
<option value="pig" selected>pig</option>
<option value="cat">cat</option>
</select><input type="checkbox" id="dog">doggi
<a href="?dog&check=1">asdasd</a>
<script>
window.onload = function () {
	var search = (window.location.search).replace("?", ""), opt = search.indexOf("&") ? search.split("&")[0] : "";
    var select = document.getElementById("sel").options;
    for (i=0; i < select.length; i++) {
        if (select[i].value == opt) { document.getElementById("sel").selectedIndex = i; break; }
    }
	if (search.split("&")[1] && search.split("&")[1].split("=")[0] && search.split("&")[1].split("=")[0] == "check" && search.split("&")[1].split("=")[1] == "1") {
		document.getElementById("dog").checked = true;
	} else { document.getElementById("dog").checked = false; }
}
</script>

или регулярками...

Damian 07.09.2012 12:36

мммм... А зачем select?
У меня, к примеру, форма такая
<label>
<input type="checkbox">Чекбокс 1</label>
<br>
<label>
<input type="checkbox">Чекбокс 2</label>
<br>
<label>
<input type="checkbox">Чекбокс 3</label>
<br>
<label>
<input type="checkbox">Чекбокс 4</label>

То есть там одни чекбоксы. Пытался Ваш код переделать, но ничего не вышло. Может есть какие-то варианты?

Damian 24.09.2012 18:17

Кстати, рабочий вариант такой (если кому интересно):

<label>
<input type="checkbox" id="chek_1">Чекбокс 1</label>
<br>
<label>
<input type="checkbox" id="chek_2">Чекбокс 2</label>
<br>
<label>
<input type="checkbox" id="chek_3">Чекбокс 3</label>
<br>
<label>
<input type="checkbox" id="chek_4">Чекбокс 4</label>


И ниже
<script language="JavaScript">
var ref = document.referrer;
switch (ref) {
case 'URL страницы со ссылкой':
   document.getElementById("chek_1").setAttribute("checked", "1");
   break

case 'URL страницы со ссылкой':
   document.getElementById("chek_2").setAttribute("checked", "1");
   break

case 'URL страницы со ссылкой':
   document.getElementById("chek_3").setAttribute("checked", "1");
   break

case 'URL страницы со ссылкой':
   document.getElementById("chek_4").setAttribute("checked", "1");
   break
}
</script>


Часовой пояс GMT +3, время: 10:13.