Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.09.2015, 08:44
Новичок на форуме
Отправить личное сообщение для next-999 Посмотреть профиль Найти все сообщения от next-999
 
Регистрация: 15.09.2015
Сообщений: 1

Всплывающее окно закрытие только по внешнему клику
Всем привет, есть скрипт из шаблона с всплывающим окном, хочу разместить там окна для входа, но при клике на окно чтобы написать текст оно сразу закрывается, помогите сделать так чтобы окно закрывалось только по внешнему клику

var RESULT_CLASS = 'kuler-finder-result',
	ITEM_CLASS = 'box-product list-layout',
	LOAD_MORE_CONTAINER_ID = 'load-more-container',
	LOAD_MORE_ID = 'load-more',
	LOADING_ID = 'kuler-finder-loading',
	LOADING_IMAGE_SRC = 'catalog/view/theme/'+ Kuler.theme +'/image/icon/loading.gif',
	LOAD_MORE_TEXT = Kuler.text_load_more;

jQuery(document).ready(function($) {
	// Autocomplete */
	(function($) {
		function Autocomplete(element, options) {
			this.element = element;
			this.options = options;
			this.timer = null;
			this.items = new Array();

			$(element).attr('autocomplete', 'off');
			$(element).on('focus', $.proxy(this.focus, this));
			$(element).on('blur', $.proxy(this.blur, this));
			$(element).on('keydown', $.proxy(this.keydown, this));

			$(element).after('<ul class="dropdown-menu"></ul>');
		}

		Autocomplete.prototype = {
			focus: function() {
				this.request();
			},
			blur: function() {
				setTimeout(function(object) {
					object.hide();
				}, 200, this);
			},
			click: function(event) {
				event.preventDefault();

				value = $(event.target).parent().attr('data-value');

				if (value && this.items[value]) {
					this.options.select(this.items[value]);
				}
			},
			keydown: function(event) {
				switch(event.keyCode) {
					case 27: // escape
						this.hide();
						break;
					default:
						this.request();
						break;
				}
			},
			show: function() {
				var pos = $(this.element).position();

				$(this.element).siblings('ul.dropdown-menu').css({
					top: pos.top + $(this.element).outerHeight(),
					left: pos.left
				});

				$(this.element).siblings('ul.dropdown-menu').show();
			},
			hide: function() {
				$(this.element).siblings('ul.dropdown-menu').hide();
			},
			request: function() {
				clearTimeout(this.timer);

				this.timer = setTimeout(function(object) {
					object.options.source($(object.element).val(), $.proxy(object.response, object));
				}, 200, this);
			},
			response: function(json) {
				var html = '';

				if (json.products && json.products.length) {
					$.each(json.products, function (index, product) {
						html += '<li class="dropdown-menu__item">' + product.html + '</li>';
					});

					if (json.more) {
						html += '<li><a class="btn live-search-load-more"><span>'+ Kuler.text_load_more +'</span></a></li>';
					}
				} else {
					html += '<li class="live-search-no-result"><i class="fa fa-meh-o fa-5x" style="display: block"></i>'+ Kuler.text_no_results +'</li>'
				}

				if (html) {
					this.show();
				} else {
					this.hide();
				}

				$(this.element).siblings('ul.dropdown-menu').html(html);

				$('.live-search-load-more').on('click', function () {
					$('.button-search')[0].click();
				});
			}
		};

		$.fn.livesearch = function(option) {
			return this.each(function() {
				var data = $(this).data('livesearch');

				if (!data) {
					data = new Autocomplete(this, option);

					$(this).data('livesearch', data);
				}
			});
		}
	})(window.jQuery);


	var $kfInput = $('.kf_search'),
		$kfBtnSearch = $('.button-search'),
		$kfCategory = $('.kf_category'),
		$kfManufacturer = $('.kf_manufacturer'),
		$kfContainer = $kfInput.parent(),
		currentSearchUrl, responseData;

	function search() {
		var url = $('base').attr('href') + 'index.php?route=product/search';

		var search = $kfInput.val();

		if (search) {
			url += '&search=' + encodeURIComponent(search);
		}

		if ($kfCategory.length) {
			url  += '&category_id=' + $kfCategory.val();
		}

		window.location = url;
	}

	/* Search */
	$kfBtnSearch.bind('click', search);

	/* Press enter */
	$kfInput.bind('keydown', function(e) {
		if (e.keyCode == 13) {
			search();
		}
	});

	$kfInput.livesearch({
		'source': function(request, response) {
			currentSearchUrl = 'index.php?route=module/kuler_cp/liveSearch&filter_name=' +  encodeURIComponent(request);

			if ($kfCategory.length && $kfCategory.val()) {
				currentSearchUrl += '&filter_category_id=' + $kfCategory.val();
			}

			if ($kfManufacturer.length && $kfManufacturer.val()) {
				currentSearchUrl  += '&filter_manufacturer_id=' + $kfManufacturer.val();
			}

			$.ajax({
				url: currentSearchUrl,
				dataType: 'json',
				success: function(data) {
					responseData = data;

					if (!data.status) {
						return;
					}

					response(data);
				}
			});
		}
	});
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необычное всплывающее окно на JavaScript VeliaR Общие вопросы Javascript 1 16.03.2015 18:07
передача переменной в всплывающее окно bma Общие вопросы Javascript 4 01.12.2014 22:54
Вывод данных из базы в цикле со ссылкой на всплывающее окно alexvb Events/DOM/Window 14 10.02.2012 16:16
Окно открывается только один раз altermann ExtJS 8 22.04.2010 11:55
Всплывающее окно... Daniar Элементы интерфейса 1 21.08.2009 15:57