вопрос по ajax

Здравствуйте, подскажите пожалуйста, есть стандартный автокомплитер поиска, там есть функция
ls.autocomplite.add — там вроде передаются 2 параметра, можно ли передавать больше параметров?

8 комментариев

avatar
Почему нет? Расширьте функцию, и принимайте столько параметров, сколько вам необходимо передавать.
avatar
вот как собственно расширить?
вот пример:
ls.autocomplete.add (
$ ('#search input-text'),aRouter ['ajax'] + 'autocompleter/tag/',false);
avatar
В Вашем примере — сам вызов функции. Тут передаются 3 параметра. Добавьте после последнего параметра — ваши желаемые, через запятую.

ls.autocomplete.add (
$ ('#search input-text'),
aRouter ['ajax'] + 'autocompleter/tag/',
false,
param_1,
param_2,
....
param_n
);

Но в самой функции Вам нужно их обработать в соотв. с вашими пожеланиями.
avatar
спасибо буду пробовать
avatar
что то так не работает, не передаются параметры
наверно нужно эту функцию ls.autocomplete.add редактировать, что проще свою написать, кстати где ls.autocomplete.add она находится?
avatar
Так как они должны передаваться, если вы их просто передаете в функцию в вызове, и не обрабатываете в самой функции?
Вот код этой функции, находящиеся тут:
/engine/lib/internal/template/js/main.js


/**
* Автокомплитер
*/
ls.autocomplete = (function ($) {
	/**
	* Добавляет автокомплитер к полю ввода
	*/
	this.add = function(obj, sPath, multiple) {
		if (multiple) {
			obj.bind("keydown", function(event) {
				if ( event.keyCode === $.ui.keyCode.TAB && $( this ).data( "autocomplete" ).menu.active ) {
					event.preventDefault();
				}
			})
			.autocomplete({
				source: function(request, response) {
					ls.ajax(sPath,{value: ls.autocomplete.extractLast(request.term)},function(data){
						response(data.aItems);
					});
				},
				search: function() {
					var term = ls.autocomplete.extractLast(this.value);
					if (term.length < 2) {
						return false;
					}
				},
				focus: function() {
					return false;
				},
				select: function(event, ui) {
					var terms = ls.autocomplete.split(this.value);
					terms.pop();
					terms.push(ui.item.value);
					terms.push("");
					this.value = terms.join(", ");
					return false;
				}
			});
		} else {
			obj.autocomplete({
				source: function(request, response) {
					ls.ajax(sPath,{value: ls.autocomplete.extractLast(request.term)},function(data){
						response(data.aItems);
					});
				}
			});
		}
	};

	this.split = function(val) {
		return val.split( /,\s*/ );
	};

	this.extractLast = function(term) {
		return ls.autocomplete.split(term).pop();
	};

	return this;
}).call(ls.autocomplete || {},jQuery);
avatar
ну в консоле должно же быть видно что я к примеру передаю какую то переменную, а в консоле только отображаются заложенный функционал и значение
avatar
С какой стати в консоли будет видно, что вы передаете больше параметров, чем заложено изначально в стеке функции?
Если эти параметры не определены в стеке функции, то какое количество бы вы их не передавали, они просто отбрасываются интерпретатором, так как на них нет ссылки. В JS объект существует до тех пор, пока есть хоть одна связанная с ним ссылка.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.