Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   текст выбраного элемента в input (https://javascript.ru/forum/dom-window/46027-tekst-vybranogo-ehlementa-v-input.html)

Officeoff.ru 25.03.2014 13:34

текст выбраного элемента в input
 
Всем доброго времени суток. Есть вопрос.
У меня есть input, при вводе в него подгружаются данные.
Стрелками вверх вниз, выбирается элемент.
Осталось сделать: подставить текст выбранного элемента в input.

var arrayLi=[];
$('.item').each(function() {
	arrayLi.push($(this));
});
var i=0,
number='',
count='undefined'!==typeof arrayLi?(arrayLi.length-1):0;
	function onKeyDown(event) {
		if(count!=0) {
			if(38==event.keyCode) {
				if(0<number) {
					arrayLi[number].removeClass('item_h');
					--number;
					--i;
					arrayLi[number].addClass('item_h');
				}
			}
			else if(40==event.keyCode) {
				if(i!=count) {
					if(arrayLi[i].hasClass('item_h') && i<count) {
					++i;
					}
					for(var l in arrayLi) {
						if(number==l) {
							arrayLi[number].removeClass('item_h');
						}
						if(l==i) {
							number=i;
							arrayLi[i].addClass('item_h');
						}
					}
				}
			var value = $("input[name='name']").attr("value"); // Думаю ошибка в этом
			$('#search_term').val(value);
			}
		}
		else {
			return;
		}
	}


Так выглядят подгружаемые элементы
$string .= "<div class='item'><div class='name'><input name='name' type='hidden' value='$item->name'></input><input name='price' type='hidden' value='$item->price'></input><div class='gets'>$item->name</div></div><div class='price'>$item->price</div></div>";


Сейчас при нажатии кнопки вниз, подставляются данные первого элемента. А как сделать, чтобы подставлялись данные выбранного пункта?

рони 25.03.2014 13:55

Цитата:

Сообщение от Officeoff.ru
Так выглядят подгружаемые элементы

а как же они выглядят без php? и почему бы сразу несделать рабочий макет с минимальным html

Officeoff.ru 25.03.2014 14:37

Цитата:

Сообщение от рони (Сообщение 304153)
а как же они выглядят без php? и почему бы сразу несделать рабочий макет с минимальным html

Так а какая разница Php или html? Работать то будет с пхп.
<div class='item'><div class='name'><input name='name' type='hidden' value='Название'></input><input name='price' type='hidden' value='550'></input><div class='gets'>$item->name</div></div><div class='price'>$item->price</div></div>
<div class='item'><div class='name'><input name='name' type='hidden' value='Название2'></input><input name='price' type='hidden' value='750'></input><div class='gets'>$item->name</div></div><div class='price'>$item->price</div></div>

Пусть будет выглядеть так. Что поменяется?

Officeoff.ru 25.03.2014 15:43

Кто нибудь может подсказать?

рони 25.03.2014 16:16

Officeoff.ru,
код скрипта неполный -- html и тот неполный и c остатками php -- короче полная background-color - по коду не на том месте скрипта нужно брать данные и уточнить где именно
:-E
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
 <style type="text/css">
 .item_h{
   background-color: #FF00FF;
 }
 </style>
</head>

<body>
<div class='item'><div class='name'><input name='name' type='hidden' value='Название'></input><input name='price' type='hidden' value='550'></input><div class='gets'>Название</div></div><div class='price'>550</div></div>
<div class='item'><div class='name'><input name='name' type='hidden' value='Название2'></input><input name='price' type='hidden' value='750'></input><div class='gets'>Название2</div></div><div class='price'>750</div></div>
<input id="search_term" name="">
<script>
var arrayLi=[];
$('.item').each(function() {
	arrayLi.push($(this));
});
var i=0,
number='',
count='undefined'!==typeof arrayLi?(arrayLi.length-1):0;
	function onKeyDown(event) {
		if(count!=0) {
			if(38==event.keyCode) {
				if(0<number) {
					arrayLi[number].removeClass('item_h');
					--number;
					--i;
					arrayLi[number].addClass('item_h');
				}
			}
			else if(40==event.keyCode) {
				if(i!=count) {
					if(arrayLi[i].hasClass('item_h') && i<count) {
					++i;
					}
					for(var l in arrayLi) {
						if(number==l) {
							arrayLi[number].removeClass('item_h');
						}
						if(l==i) {
							number=i;
							arrayLi[i].addClass('item_h');
						}
					}
				}
			}
           var value = $("input[name='name']",'.item_h').val();
		   $('#search_term').val(value);
		}
		else {
			return;
		}
	}
 $('#search_term').keydown(onKeyDown)
 </script>
</body>
</html>

Officeoff.ru 25.03.2014 16:54

Большое спасибо. Мне нужна была вот эта строка
var value = $("input[name='name']",'.item_h').val();


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