Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Получение данных из нескольких select с одним name (https://javascript.ru/forum/dom-window/54460-poluchenie-dannykh-iz-neskolkikh-select-s-odnim-name.html)

psfdek 18.03.2015 08:29

Получение данных из нескольких select с одним name
 
Необходимо как то получить значения нескольких Select c одним name.
Обычной формой оно нормально работает, а если через getXmlHttpRequest(), то получает только из первого Select.

<div id="qwqwqw"><div style="position:relative;">Товар 1
      <select name="thisplace[]">
        <option value="4">Грандпри</option>
        <option value="1">Золото</option>
        <option value="2">Серебро</option>
        <option value="3">Бронза</option>
      </select> 
      </div><div style="position:relative;">Товар 2
      <select name="thisplace[]">
        <option value="4">Грандпри</option>
        <option value="1">Золото</option>
        <option value="2">Серебро</option>
        <option value="3">Бронза</option>
      </select> 
      </div>
    </div>

function testA(){
        var ElemId = document.getElementById('qwqwqw');
		var val5 = ElemId.querySelector("select[name='thisplace[]']").value;  
        alert(val5);
      }


Вот пример демо...
http://learn.javascript.ru/play/psn4Rb

ksa 18.03.2015 08:36

Цитата:

Сообщение от psfdek
а если через getXmlHttpRequest(), то получает только из первого Select.

Дело явно не в getXmlHttpRequest()...

Пример

<!DOCTYPE html>
<html>
<head>
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
window.onload=function(){
	var a=document.querySelectorAll('#qwqwqw [name="thisplace[]"]');
	for (var i=0; i<a.length; i++) {
		alert(a[i].value);
	};
};
</script>
</head>
<body>
<div id="qwqwqw">
	<div style="position:relative;">Товар 1
		<select name="thisplace[]">
			<option value="4">Грандпри</option>
			<option value="1">Золото</option>
			<option value="2">Серебро</option>
			<option value="3">Бронза</option>
		</select> 
	</div>
	<div style="position:relative;">Товар 2
		<select name="thisplace[]">
			<option value="4">Грандпри</option>
			<option value="1">Золото</option>
			<option value="2">Серебро</option>
			<option value="3">Бронза</option>
		</select> 
	</div>
</div>
</body>
</html>

psfdek 18.03.2015 09:31

Благодарю Вас!
------------------------------------------------------------------------------
http://learn.javascript.ru/play/782xj - для сохранности ссылки

laimas 18.03.2015 10:03

А как же вы их на сервер различать будете, что кому принадлежит? А если не важно это, то зачем два списка?

psfdek 18.03.2015 10:23

Это же часть, всего лишь.
У меня в атрибуте data-id лежит идентификатор товара.
будут отсылаться 2 строки, 1 - строка с местами, 2 - строка с ИД.
Потом в php сопоставление по порядку просто.


Вот например так http://learn.javascript.ru/play/TpXRb

laimas 18.03.2015 10:29

А причем тут атрибут data-id, если передаются значения выбранное из писков? Уж тогда thisplace[идентификатор товара] - получите один массив ключами которого и будут идентификаторы товаров.

ksa 18.03.2015 10:37

Цитата:

Сообщение от laimas
А как же вы их на сервер различать будете, что кому принадлежит?

Так там целый массив придет. Т.е. задача типа "Пришлите, что вам нужно из нашего списка" вполне решаема...

laimas 18.03.2015 10:41

Даже так? То есть есть идентичные списки, но каждый принадлежит разным источникам, и чтобы получить значения и понять у какого из источников что выбрано, нужно городить такой геморрой? Почитайте:

У меня в атрибуте data-id лежит идентификатор товара.
будут отсылаться 2 строки, 1 - строка с местами, 2 - строка с ИД.


И заметьте, что эти строки ничем не связаны. Ну что это как не профанация?

psfdek 18.03.2015 10:45

thisplace - должен быть одинаковый у всех.
Так как там в форму запись идет обычным методом.
Я реализую отображение выбранных елементов из селекта.1, и у каждого выбранного элемента свой селект.2
Потом выбранные товары записываются как строка из селекта.1 а места этих товаров записываются в том же порядке из селекта.2.

Это все на неткате, там по другому никак не сделать вроде бы.
Короче всё норм.

laimas 18.03.2015 10:54

Чушь это собачья. Если к примеру, получаем те же товары из корзины, и среди этого есть товары у которых изменили значения какие либо, и те что надо удалить из корзины, то могут быть два массива в итоге:

а) массив всех товаров ключами которого являются идентификаторы
б) массив выбранных для удаления товаров, значения которых (или также ключи) это их идентификаторы

Если пришел массив б) значит пересечением массивов удаляем из массива а) удаляемые товары. Это удобно.

Зачем в вашем случае городить огород, если один массив сразу может передать информацию и о идентификаторе товара, и его выборе?


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