BVB Source Codes

Program V1.0 AjaxQuickSearch fast display search results Show ajax_search.js Source code

Return Download Program V1.0 AjaxQuickSearch fast display search results: download ajax_search.js Source code - Download Program V1.0 AjaxQuickSearch fast display search results Source code - Type:.js
  1.  
  2.  
  3. //*   Ajax快速搜索结果程序 - Ajax Quick Search Results  
  4. //*   Copyright  2008 - 2010 闻泰网络
  5. //*   http://www.weentech.com              
  6.  
  7.  
  8.  
  9. var ween_QuickSearch = {
  10.         minimum_length: 3,               // 在搜索输入框中键入多少个字符后,开始进行Ajax查询
  11.         search_delay: 125,                             // 在搜索输入框中键入文字时,开始进行Ajax查询的延迟时间(毫秒, 1秒=1000毫秒)
  12.         ween_quicksearchwidth: 238,           // 下拉式快速搜索结果的宽度(像素值)
  13.         cache: new Object(),
  14.  
  15.         init: function()
  16.         {
  17.                 $('#ween_search_query').bind("keydown", ween_QuickSearch.on_keydown);
  18.                 $('#ween_search_query').bind("keyup", ween_QuickSearch.on_keyup);
  19.                 $('#ween_search_query').bind("change", ween_QuickSearch.on_change);
  20.                 $('#ween_search_query').blur(ween_QuickSearch.on_blur);
  21.                 $('#ween_search_query').attr('autocomplete', 'off');
  22.  
  23.                 var scripts = document.getElementsByTagName('SCRIPT');
  24.                 for(var i = 0; i < scripts.length; i++)
  25.                 {
  26.                         s = scripts[i];
  27.                         if(s.src && s.src.indexOf('ajax_search.js') > -1)
  28.                         {
  29.                                 ween_QuickSearch.path = s.src.replace('ajax_search.js', '');
  30.                                 break;
  31.                         }
  32.                 }
  33.         },
  34.  
  35.         on_blur: function(event)
  36.         {
  37.                 if(!ween_QuickSearch.item_selected && !ween_QuickSearch.over_all)
  38.                 {
  39.                         ween_QuickSearch.hide_popup();
  40.                 }
  41.         },
  42.  
  43.         on_keydown: function(event)
  44.         {
  45.                 if(event.keyCode == 13 && !event.altKey)
  46.                 {
  47.                         if(ween_QuickSearch.selected)
  48.                         {
  49.                                 try {
  50.                                         event.preventDefault();
  51.                                         event.stopPropagation();
  52.                                 } catch(e) { }
  53.                                 window.location = ween_QuickSearch.selected.url;
  54.                                 return false;
  55.                         }
  56.                         else
  57.                         {
  58.                                 ween_QuickSearch.hide_popup();
  59.                         }
  60.                 }
  61.                 else if(event.keyCode == 27)
  62.                 {
  63.                         if(document.getElementById('ween_QuickSearch'))
  64.                         {
  65.                                 try {
  66.                                         event.preventDefault();
  67.                                         event.stopPropagation();
  68.                                 } catch(e) { }
  69.                         }
  70.                         ween_QuickSearch.hide_popup();
  71.                 }
  72.         },
  73.  
  74.         on_keyup: function(event)
  75.         {
  76.                 if(ween_QuickSearch.timeout)
  77.                 {
  78.                         clearTimeout(ween_QuickSearch.timeout);
  79.                 }
  80.  
  81.                 if(event.keyCode == 40 && ween_QuickSearch.results)
  82.                 {
  83.                         if(ween_QuickSearch.selected && ween_QuickSearch.results.length >= ween_QuickSearch.selected.index+1)
  84.                         {
  85.                                 ween_QuickSearch.highlight_item(ween_QuickSearch.selected.index+1, true);
  86.                         }
  87.                         if(!ween_QuickSearch.selected && ween_QuickSearch.results.length > 0)
  88.                         {
  89.                                 ween_QuickSearch.highlight_item(0, true);
  90.                         }
  91.                         try {
  92.                                 event.preventDefault();
  93.                                 event.stopPropagation();
  94.                         } catch(e) { }
  95.                         return false;
  96.                 }
  97.                 else if(event.keyCode == 38 && ween_QuickSearch.results)
  98.                 {
  99.                         if(ween_QuickSearch.selected && ween_QuickSearch.selected.index > 0)
  100.                         {
  101.                                 ween_QuickSearch.highlight_item(ween_QuickSearch.selected.index-1, true);
  102.                         }
  103.                         try {
  104.                                 event.preventDefault();
  105.                                 event.stopPropagation();
  106.                         } catch(e) { }
  107.                 }
  108.                 else if(event.keyCode == 27)
  109.                 {
  110.                         ween_QuickSearch.hide_popup();
  111.                 }
  112.                 else
  113.                 {
  114.                         ween_QuickSearch.selected = false;
  115.                         if($('#ween_search_query').val().replace(/^\s+|\s+$/g, '').length >= ween_QuickSearch.minimum_length)
  116.                         {
  117.                                 if(ween_QuickSearch.timeout)
  118.                                 {
  119.                                         window.clearTimeout(ween_QuickSearch.timeout);
  120.                                 }
  121.                                 ween_QuickSearch.timeout = window.setTimeout(ween_QuickSearch.do_search, ween_QuickSearch.search_delay);
  122.                         }
  123.                         else {
  124.                                 if(document.getElementById('ween_QuickSearch'))
  125.                                 {
  126.                                         $('#ween_QuickSearch').remove();
  127.                                 }
  128.                         }
  129.                 }
  130.         },
  131.  
  132.         on_change: function(event)
  133.         {
  134.                 return (ween_QuickSearch.on_keydown(event) && ween_QuickSearch.on_keyup(event));
  135.         },
  136.  
  137.         do_search: function()
  138.         {
  139.                 var cache_name = $('#ween_search_query').val().length+$('#ween_search_query').val();
  140.                 if(ween_QuickSearch.cache[cache_name])
  141.                 {
  142.                         ween_QuickSearch.search_done(ween_QuickSearch.cache[cache_name]);
  143.                 }
  144.                 else
  145.                 {
  146.                         $.ajax({
  147.                                 type: 'GET',
  148.                                 url: ween_QuickSearch.path+'ajax_search.php?action=AjaxSearch&ween_search_query='+encodeURIComponent($('#ween_search_query').val()),
  149.                                 success: function(response) { ween_QuickSearch.search_done(response); }
  150.                         });
  151.                 }
  152.         },
  153.  
  154.         search_done: function(response)
  155.         {
  156.                 var cache_name = $('#ween_search_query').val().length+$('#ween_search_query').val();
  157.                 ween_QuickSearch.cache[cache_name] = response;
  158.  
  159.                 if(window.ActiveXObject)
  160.                 {
  161.                         var results_xml = new ActiveXObject("Microsoft.XMLDOM");
  162.                         results_xml.async = false;
  163.                         results_xml.loadXML(response);
  164.                 }
  165.                 else
  166.                 {
  167.                         var _parser = new DOMParser();
  168.                         var results_xml = _parser.parseFromString(response, "text/xml");
  169.                 }
  170.  
  171.                 var results = results_xml.getElementsByTagName('result');
  172.                 if(results && results.length > 0)
  173.                 {
  174.                         ween_QuickSearch.results = new Array();
  175.                         for(var i = 0; i < results.length; i++)
  176.                         {
  177.                                 ween_QuickSearch.results.push({
  178.                                         title: results[i].getAttribute('title'),
  179.                                         url: results[i].getAttribute('url'),
  180.                                         price: results[i].getAttribute('price'),
  181.                                         ratingimg: results[i].getAttribute('ratingimg'),
  182.                                         image: results[i].getAttribute('image')
  183.                                 });
  184.                         }
  185.  
  186.  
  187.  
  188.                         if(document.getElementById('ween_QuickSearch'))
  189.                         {
  190.                                 $('#ween_QuickSearch').remove();
  191.                         }
  192.  
  193.                         var popup_container = document.createElement('TABLE');
  194.                         popup_container.className = 'ween_QuickSearch';
  195.                         popup_container.id = 'ween_QuickSearch';
  196.                         popup_container.cellPadding = "0";
  197.                         popup_container.cellSpacing = "0";
  198.                         popup_container.border = "0";
  199.  
  200.                         var popup = document.createElement('TBODY');
  201.                         popup_container.appendChild(popup);
  202.  
  203.                         var tr = document.createElement('TR');
  204.                         var td = document.createElement('TD');
  205.                         tr.className = "ween_QuickSearchTitle";
  206.                         td.colSpan = "2";
  207.                         td.innerHTML = results_xml.getElementsByTagName('results')[0].getAttribute('type');
  208.                         tr.appendChild(td);
  209.                         popup.appendChild(tr);
  210.  
  211.                         for(var i = 0; i < ween_QuickSearch.results.length; i++)
  212.                         {
  213.                                 var result = ween_QuickSearch.results[i];
  214.                                 var tr = document.createElement('TR');
  215.                                 tr.id = "ween_QuickSearchResult"+i;
  216.                                 tr.className = "ween_QuickSearchResult";
  217.  
  218.                                 var image_container = document.createElement('TD');
  219.                                 image_container.className = 'ween_QuickSearchResultImage';
  220.  
  221.                                 result.image = unescape(result.image);
  222.                                 var image = document.createElement('IMG');
  223.                                 image.src = result.image;
  224.                                 image.alt = '';
  225.                                 image.title = unescape(result.title);
  226.                                 image_container.appendChild(image);
  227.                                 tr.appendChild(image_container);
  228.  
  229.                                 var meta = document.createElement('TD');
  230.                                 meta.className = "ween_QuickSearchResultMeta";
  231.  
  232.                                 var link = document.createElement('A');
  233.                                 link.className = "ween_QuickSearchResultName";
  234.                                 link.title = unescape(result.title);
  235.                                 link.href = result.url;
  236.                                 link.innerHTML = unescape(result.title);
  237.                                 meta.appendChild(link);
  238.  
  239.                                 var RatingDIV = document.createElement('div');
  240.                                 RatingDIV.className = "ween_QuickSearchResultRatingDIV";
  241.                                 meta.appendChild(RatingDIV);
  242.  
  243.                                 var price = document.createElement('span');
  244.                                 price.className = "ween_QuickSearchResultPrice";
  245.                                 price.innerHTML = unescape(result.price);
  246.                                 RatingDIV.appendChild(price);
  247.  
  248.  
  249.                                 if(result.ratingimg)
  250.                                 {
  251.                                         var rating = document.createElement('IMG');
  252.                                         rating.className = "ween_QuickSearchResultRatingIMG";
  253.                                         rating.src = unescape(result.ratingimg);
  254.                                         RatingDIV.appendChild(rating);
  255.                                 }
  256.  
  257.                                 tr.url = result.url;
  258.                                 tr.index = i;
  259.                                 tr.appendChild(meta);
  260.                                 popup.appendChild(tr);
  261.  
  262.                                 tr.onmouseover = function() { ween_QuickSearch.item_selected = true; ween_QuickSearch.highlight_item(this.index, false); };
  263.                                 tr.onmouseup = function() { window.location = this.url; };
  264.                                 tr.onmouseout = function() { ween_QuickSearch.item_selected = false; ween_QuickSearch.unhighlight_item(this.index) };
  265.                         }
  266.  
  267.                         var all_results = results_xml.getElementsByTagName('results')[0].getAttribute('view_all');
  268.                         if(all_results)
  269.                         {
  270.                                 var tr = document.createElement('TR');
  271.                                 var td = document.createElement('TD');
  272.                                 tr.className = "ween_QuickSearchAllResults";
  273.                                 tr.onmouseover = function() { ween_QuickSearch.over_all = true; };
  274.                                 tr.onmouseout = function() { ween_QuickSearch.over_all = false; };
  275.                                 td.colSpan = 2;
  276.                                 td.innerHTML = all_results;
  277.                                 tr.appendChild(td);
  278.                                 popup.appendChild(tr);
  279.                         }
  280.  
  281.                         var clone = popup.cloneNode(true);
  282.                         document.body.appendChild(clone);
  283.                         clone.style.top = "10px";
  284.                         clone.style.left = "10px";
  285.                         offset_height = clone.offsetHeight;
  286.                         offset_width = clone.offsetWidth;
  287.                         clone.parentNode.removeChild(clone);
  288.  
  289.                         var offset_top = offset_left = 0;
  290.                         var element = document.getElementById('ween_search_query');
  291.  
  292.                         offset_left = 0;
  293.  
  294.                         offset_top = -1;
  295.                         do
  296.                         {
  297.                                 offset_top += element.offsetTop || 0;
  298.                                 offset_left += element.offsetLeft || 0;
  299.                                 element = element.offsetParent;
  300.                         } while(element);
  301.  
  302.                         if (document.getBoxObjectFor) {
  303.                                 var additionleft = 1;
  304.                         }
  305.                         else {
  306.                                 var additionleft = 0;
  307.                         }
  308.  
  309.                         popup_container.style.position = "absolute";
  310.                         popup_container.style.left = offset_left +additionleft+ "px";
  311.                         popup_container.style.top = offset_top + document.getElementById('ween_search_query').offsetHeight +additionleft + "px";
  312.                         if(typeof(ween_QuickSearch.ween_quicksearchwidth) != 'undefined') {
  313.                                 popup_container.style.width = ween_QuickSearch.ween_quicksearchwidth - additionleft  + "px";
  314.                         }
  315.                         else {
  316.                                 popup_container.style.width = document.getElementById('ween_search_query').offsetWidth - additionleft + "px";
  317.                         }
  318.                         if($('#ween_QuickSearch'))
  319.                         {
  320.                                 $('#ween_QuickSearch').remove();
  321.                         }
  322.                         document.body.appendChild(popup_container);
  323.                         popup_container.style.display = '';
  324.                 }
  325.                 else
  326.                 {
  327.                         if(document.getElementById('ween_QuickSearch'))
  328.                         {
  329.                                 $('#ween_QuickSearch').remove();
  330.                         }
  331.                 }
  332.         },
  333.  
  334.  
  335.         hide_popup: function()
  336.         {
  337.                 $('#ween_QuickSearch').remove();
  338.                 ween_QuickSearch.selected = null;
  339.         },
  340.  
  341.         highlight_item: function(index, keystroke)
  342.         {
  343.                 element = $('#ween_QuickSearchResult'+index);
  344.                 if(keystroke == true)
  345.                 {
  346.                         if(ween_QuickSearch.selected) ween_QuickSearch.selected.className = 'ween_QuickSearchResult';
  347.                         ween_QuickSearch.selected = document.getElementById('ween_QuickSearchResult'+index);
  348.                 }
  349.                 element.addClass("ween_QuickSearchHover");
  350.         },
  351.  
  352.         unhighlight_item: function(index)
  353.         {
  354.                 element = $('#ween_QuickSearchResult'+index);
  355.                 element.removeClass('ween_QuickSearchHover');
  356.         }
  357. };
  358.  
  359. $(document).ready(function()
  360. {
  361.         ween_QuickSearch.init();
  362. });
  363.  
downloadajax_search.js Source code - Download Program V1.0 AjaxQuickSearch fast display search results Source code
Related Source Codes/Software:
Baidu know PHP pseudo static pseudo original real-time updating the thief v2.0 - Version 2.0 upgrade instructions   For bette... 2016-10-18
Drupal v7.9 multilingual version - Drupal7 version is finally released! Have been lon... 2016-10-18
Sina tencent FEED release v1.0 authorized everyone connected with a key - Sina weibo and tencent weibo, renren authorized co... 2016-10-18
Bulletin board system KaiBB v2.0.1 - KaiBB is a free open source bulletin board system,... 2016-10-18
XQCMS enterprise website system V4.0 beta mysql version - This CMS is designed for people to use, not a prog... 2016-10-18
Canphp framework v1.5 (PHP framework) - CanPHP framework (CP for short) is a simple, free,... 2016-10-18
8 boy simple m table v2.0 - Multi-purpose domain meters super easy procedure, ... 2016-10-18
Optimal source v2.02 moxa english-chinese translation translation - The background of new online editing template the ... 2016-10-18
Beautify the edition/PHP order submission system with the function of E-mail and SMS alerts - Program description: Currently most downloadable A... 2016-10-18
Link grid edition v2.0 beautification - Function description: 2016-10-18
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top