Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Autocompletamento JQuery

    Ciao a tutti sto utilizzando uno script per l'autocompletamento in JQuery ma non riesco a fare una cosa:
    Vorrei che selezionando la scelta tra due option mi abiliti e disabiliti l'autocompletamento sulla textbox..

    la textbox è questa:
    codice:
     
    <input type="text" id="searchKey_input" class="suggest_keys" name="searchKey_input" alt="_script/keys.php" />
    Lo script utilizzato è il seguente:

    codice:
    ;(function($){
    	$(document).ready(function(){
    		
    		////////////////////////////////////////////////////
    				
    		$(".suggest").each(function(){
    			var _alt = this.alt;
    			var _options = $(this).metadata();
    			if(_alt.length > 0){
    				$(this).autocomplete(_alt, _options);
    			}
    		});
    	
    		////////////////////////////////////////////////////
    			
    		$(".suggest_keys").each(function(){
    			
    			var _id = this.id;
    			var _name = this.name;
    			
    			//il name è obbligatorio
    			if(!_name)
    				return;
    				
    			var _alt = this.alt;
    			
    			var _hidden_id = _id ? _id + "_hidden" : false;
    			var _hidden_name = '';
    			//name
    			//console.log(_name);
    			if(_name && _name.indexOf("[") !== -1  && _name.indexOf("]") !== -1){
    				var _cre =  /\[.*\]/;
    				var _m = _cre.exec(_name);
    				var _t = _m.slice(0).toString().replace("[","").replace("]","");
    				_hidden_name = _name.replace(_t, ""+_t +"_hidden");
    			}else if(_name){
    				_hidden_name = _name + "_hidden";
    			}
    			//console.log(_hidden_name);
    			//DEBUG : var _field = $('<input type="text" value="" style="background:#000;color:#fff" />');
    			var _field = $('<input type="hidden" value="" />');
    			
    			if(_hidden_id)
    				_field.attr("id", _hidden_id);
    				
    			if(_hidden_name)
    				_field.attr("name", _hidden_name);
    				
    			$(this).after(_field);
    					
    			var _options = $(this).metadata();
    			_options.formatItem = function(row){
    				return row[1];
    				//row[0] + "  :  " + row[1] + "";
    			};
    			_options.formatResult = function(row){
    				//_field.val(row[0]);	
    				return row[1].replace(/(<.+?>)/gi, '');
    			};
    			
    			
    			//console.log(_options);
    			if(_alt.length > 0){
    				$(this).autocomplete(_alt, _options);
    			}
    		}).result(function(event, item) {
    			var _hidden_id = this.id + "_hidden";
    			$("#" + _hidden_id).val(item[0]);
    		});	
    		
    		////////////////////////////////////////////////////
    		
    		$(".suggest_table").each(function(){
    		
    			var _alt = this.alt;
    			
    			var _options = $(this).metadata();
    			var _autocomplete_options = _options.autocomplete || {};
    			_autocomplete_options.formatItem = function(row, pos){
    				return _table_format(_options, row, pos);
    			};
    			_autocomplete_options.formatResult = function(row){
    				return _table_result(_options, row);
    			};
    			
    			if(_alt.length > 0){
    				$(this).autocomplete(_alt, _autocomplete_options);
    			}
    		}).result(function(event, item) {
    			$(this).trigger("autocomplete.table.data", [item]);
    			var _hidden_id = this.id + "_hidden";
    			$("#" + _hidden_id).val(item[0]);
    		});
    		
    		function _table_format(options, row, pos){
    			if(!options.separator) options.separator = "#";
    			var _arr = row[1].split(options.separator);
    			var _str = "";
    			for(var _x = 0;_x < _arr.length;_x++){
    				_str += '<div class="fld_'+(_x + 1)+'">'+_arr[_x]+'</div>';
    			}
    			_str = "<div class=\"tbl\">" + _str + "</div>";
    			if(pos == 1){
    				jQuery(".ac_results > ul").css("position","relative");
    				var _int = '';
    				for(var _x = 0;_x < options.th.length;_x++){
    					_int += '<div id="int_'+(_x + 1)+'">'+options.th[_x]+'</div>';
    				} 
    				jQuery('<li class="ac_intestazione"><div class="tbl">'+_int+'</div>')
    				.appendTo(".ac_results > ul");
    			}else if(pos == 2){
    				jQuery(".ac_results > ul > li").not(".ac_intestazione").css("margin-top","20px");
    			}
    			return _str;
    		}
    		function _table_result(options, row){
    			return row[1].split("#").join(",");
    		}
    	});
    })(jQuery);
    Come posso fare?

  2. #2
    Qualche ideuccia?

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Originariamente inviato da webking2003
    Qualche ideuccia?
    Se cerchi la strada, le operazioni potrebbero essere:
    - Scollegamento dell'autocomplete dal elemento e creazione di una funzione;
    - Creazione di una funzione che in base all'opzione selezionata ricolleghi il autocomplete al input
    Questo in teoria, in pratica potrebbe non funzionare o non essere realizzabile.
    Se cerchi codice la vedo molto più dura essendo un'operazione che richiede tempo e voglia.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.