Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите с выборкой значений (https://javascript.ru/forum/jquery/42947-pomogite-s-vyborkojj-znachenijj.html)

cha0s 15.11.2013 00:22

Помогите с выборкой значений
 
Имеется такой html

<div id="results">
<div position_title="1" id="option-242" class="option radio">
<div class="fields">
<div>
<input type="radio" name="option[242]" value="92" id="option-value-92">
<label for="option-value-92">5 x 7</label>
</div><div>
<input type="radio" name="option[242]" value="93" id="option-value-93">
<label for="option-value-93">6 x 6</label>
</div></div>
</div>
<div position_title="1,1" id="option-270" class="option">
<label style="width:150px;"><span class="required">*</span>RSVP OR INSERT STYLE:</label>

<div  class="fields">
<select name="option[270]">
<option value=""> --- Please Select --- </option>
<option value="336">DOUBLE SIDED RSVP POSTCARD</option>
</select>
</div>
</div></div>


то есть алгоритм такой
1)Обязательно только то что выбрано внутри контейнера div id="results"
2) Если пользователь кликнул по radio кнопке получить ее id="" а дальше по этому id считать значение с label который с таким-же for именем(ну только то что в лабеле текст находится).
3) Так-же само только уже в случае с select.

Спасибо.

cha0s 15.11.2013 00:34

почему-то не получается даже selector настроить на click по radio кнопке фиксировать....

$('#results input[type=\'radio\']:checked').click(function() {....................

не работает подобный selector...

ksa 15.11.2013 10:00

Цитата:

Сообщение от cha0s
Если пользователь кликнул по radio кнопке получить ее id="" а дальше по этому id считать значение с label который с таким-же for именем(ну только то что в лабеле текст находится).

Как вариант...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(function (){
	$('#results input:radio').click(function (){
		alert($(this).next('label[for="'+this.id+'"]').text());
	});
});
</script>
</head>
<body>
<div id="results">
	<div position_title="1" id="option-242" class="option radio">
		<div class="fields">
			<div>
				<input type="radio" name="option[242]" value="92" id="option-value-92">
				<label for="option-value-92">5 x 7</label>
			</div>
			<div>
				<input type="radio" name="option[242]" value="93" id="option-value-93">
				<label for="option-value-93">6 x 6</label>
			</div>
		</div>
	</div>
	<div position_title="1,1" id="option-270" class="option">
		<label style="width:150px;"><span class="required">*</span>RSVP OR INSERT STYLE:</label>
		<div class="fields">
			<select name="option[270]">
				<option value="">--- Please Select ---</option>
				<option value="336">DOUBLE SIDED RSVP POSTCARD</option>
			</select>
		</div>
	</div>
</div>
</body>
</html>

ksa 15.11.2013 10:00

Цитата:

Сообщение от cha0s
Так-же само только уже в случае с select.

У твоего селекта нет ИД... :)

cha0s 27.11.2013 00:29

спасибо с радио кнопками проблема решина, по поводу select, как получить информацию выбранную в нем, вот смотри есть нечто такое....

Задача вообщем такая имеется куча select элементов http://jsfiddle.net/z79cn/ (там работает выбор, но только первого шага) (SELECT элементов может быть сколько угодно, по имени select элемента - обращаться нельзя! надо как-то так знать что это выбирается именно этот SELECT (как-то может положением в DOM таблице я не знаю даже....) как такое намутить? заплет(

Задача:
Имеется n-ное количество select элементов, построить строку в виде выбранных значений этих select элементов, по имени select элемента обращаться нельзя, если в процессе выбора, пользователь захочет вернутся на предыдущие selecti(а строка уже с выбором построена), то поменять в строке только те значения которые изменил пользователь!

Вот как такое сделать, сложность вся как понять какой список юзает пользователь? если имя его юзать нельзя.... но можно например узнать как-то положение этого Selecta в DOM таблице... например в ДОМЕ Selecti находятся на 20,30,40,50 позициях, построилась строка из выбранных уже нами этих 4 selectov, например , ну и каким образом например пользователь поменял значение selecta который в доме находится на 30 позиции, поменять только строку в test1,XXXXXXXX,test3,test4 этом месте, такое вообще реализуется? или тут надо не строку а массив брать? где 0 ячейка это первый select, 1 ячейка 2-ой select? и потом в виде строки выводить это? или как? я буду рад даже просто теорию если расскажите))))!

danik.js 27.11.2013 00:57

cha0s, тут бы объект типа Map помог, да вот беда с кроссбраузерностью. Можешь впринципе создавать свойство у DOM-элемента select, которое будет указывать на <span> с текстом.
Вобще, в задачу особо не вникал, полностью вопрос не читал..

cha0s 27.11.2013 01:37

Вот для примера
достаточно просто слов SMALL,LARGE, DAMASK и т.д тупо строку склепать...

То есть например есть 6 SELECT, пользователь делает выбор и сверху строится строка его выбора, вроде пока не так сложно, НО когда пользователь захочет поменять выбранное значение какое-то ранние, мне как-то надо знать где оно в строке... чтоб только этот кусочек заменить... не знаю честно что тут лучше и как быть), еслиб был бы просто последовательный выбор без возможности изменить было бы вообще все просто строку через .append сделал да и все)), но тут дилемма в том как я могу знать в каком SELECT меняется значение, и уж тем более знать где оно в строке находится чтоб сделать строке replace на другое значение;DDD (имя selecta нельзя использовать - hard code не прокатит)

cha0s 27.11.2013 18:33

Спасибо, только заметил что почему-то в моем примере он не корректно работает

http://jsfiddle.net/z79cn/

выбери например первых 3-ри элемента(LARGE) - все ок, а потом попробуй поменять 2-ое значение на SMALL, он в строке меняет первую позицию), из-за чего это происходит? я заменил
var selects = document.getElementsByTagName('select');

это на свое
var selects = $('[position_title ^= 3] select');

так как мне не надо все selecti, а только определенные, ну цикл твой не ломается все четко определяет что 6 selectov у меня, что ему не нравится в коде? странно а твой пример работает нормально))

cha0s 27.11.2013 20:26

Цитата:

Сообщение от Rise (Сообщение 283191)
одинаковые значения разных селектов одновременно выведенные в строку.

упс сорри не тот линк дал)

http://jsfiddle.net/z79cn/1/

вот этот построен на базе твоего кода, разница только в том что я выбераю не все Selecti а только те у которых есть атрибут со значением position_title=3*, выбери например у первых двух значения LARGE, а потом у 2-го поменяй значение на SMALL, он уже заменяет в строке не то что нужно) значение первого селекта переписывает... а разницы от твоего кода нету не какого)) только в выборе условие стоит, мы имеем тот-же самый массив...


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