Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Одна функция с keyup, для разных input (https://javascript.ru/forum/misc/34121-odna-funkciya-s-keyup-dlya-raznykh-input.html)

vitaly63 21.12.2012 00:57

Одна функция с keyup, для разных input
 
Доброго времени суток. Собственно даже не знал как правильно назвать тему. Дело в том что есть ф-ия:
$(document).ready(function() {
	var timeOut = null; 
    $("input#search").keyup(function() {
        setTimeout(search($(this).attr('class')),5000);
	});
	function search(mode) {
		timeOut = null; 
		var text		= $("#search").val();
		var minimum	= 3;
		var maximum	= 255;
		if (text.length > minimum && text.length < maximum) {
			ajaxModule.query({
				action  : 'search',
				mode    : mode,
				text	: text,
				beforeSend: function(html) { 
					$('#search-r-' + mode).html('');
					$("#search-text").show();
			   }
			});
			ajaxModule.resoult.search = function(text){
				$('#search-r-' + mode).show();
				$('#search-r-' + mode).html(text.html);
			};
		}
		return false;
	};
});

Суть ее в то что если есть input и id search то при вводе отсылается AJAX запрос и выводит его в div и id search-r- + class из imput в котором мы вводим текст. Дело в том что все работает отлично, до тех пор пока на страницы, не выводится еще один input с id search но другим class для вывода другой информации. Вопрос: как сделать так что бы ф-ия была как бы универсальнее?
Т.е. если у нас есть, на одной странице:
<input id="search" class="country" type="text" name="user" placeholder="Страна" value=""/>
<div id="search-r-country"></div>

<input id="search" class="sity" type="text" name="user" placeholder="Город" value="" />
<div id="search-r-sity"></div>

то при вводе текста, отображалась разная информация для разного текста.
Заранее благодарю за помощь.

Deff 21.12.2012 03:49

Цитата:

Сообщение от vitaly63
Суть ее в то что если есть input и id search то при вводе отсылается AJAX запрос и выводит его в div и id search-r- + class из

Не привязываться к id;
Делать через класс

<input class="search" type="text" name="user" placeholder="Страна" value=""/>
<div class="search-r-country"></div>
<div class="search-text"></div>

<input class="search" type="text" name="user" placeholder="Страна" value=""/>
<div class="search-r-country"></div>
<div class="search-text"></div>



Делать функцию .keyup по классу
Переопределять текущий объект в переменную
var TH=$(this);
Далее представлять подставляемые селекторы в Аякс из Аякса через эту переменную

16 beforeSend: function(html) {
17 TH.next('div').html('');
18 TH.next('div').next(".search-text").show();
19 }

Удобнее каждый новый блок с HTML обрамить общей родительской оберткой, тогда поиск элементов в текущем блоке удобнее делать исходя из общего родителя

vitaly63 21.12.2012 06:17

Deff,
спасибо большое, так и сделаю. Есть еще вопрос в догонку но уже не по этой теме.
Есть ф-ия:
$('select[name="names"]').change(function(){
						var element = $(this).val();
					});

Собственно она определяет выбранный нами элемент, из селектора.
Есть кнопка:
<span class="button" onclick="get_send_names('faces', 1);">Подтвердить</span>

она отправляет данные на сервер, тоже на аяксе. но надо сделать так чтобы значение 1 в get_send_names('faces', 1) менялось на значение из селектора value т.е. если мы сначало выбираем из селектора значение с value=6 то get_send_names('faces', 1) превращается в get_send_names('faces', 6)б ну и т.д. и т.п.

godofjavascript 21.12.2012 11:45

$(document).ready(function(){})

$(function(){})


к слову

vitaly63 21.12.2012 19:55

godofjavascript,извините, можно хотя бы пример?


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