Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Lino80
    Registrato dal
    Oct 2005
    Messaggi
    1,560

    jquery autocomplete problema maiuscola minuscola

    Ho lo script autocomplete ajax che tramite questa pagina richiama le parole contenute in un database:

    Codice PHP:
    <?php

    $link 
    mysql_connect('localhost''db''passw');
    mysql_query("SET NAMES 'utf8';");
    if (!
    $link) {
       die(
    'Could not connect: ' mysql_error());
    }
    if (!
    mysql_select_db("db")) {
       echo 
    "Unable to select mydbname: " mysql_error();
       exit;
    }

    $result mysql_query("SELECT nome FROM  persone WHERE nome LIKE '$part%' LIMIT 10");
    while (
    $row mysql_fetch_assoc($result)) {
               
    $colors[]=$row['nome'];
    }
    mysql_free_result($result);
    mysql_close($link);

    $part $_GET['part'];
    $length strlen($part);
    // check the parameter
    if(isset($_GET['part']) and $_GET['part'] != ” and $length 1)
    {
        
    // initialize the results array
        
    $results = array();

        
    // search colors
        
    foreach($colors as $color)
        {
            
    // if it starts with 'part' add to results
            
    if( strpos($color$_GET['part']) === ){
                
    $results[] = $color;
            }
        }

        
    // return the array as json with PHP 5.2
        
    echo json_encode($results);
    }
    ?>
    Ho un problema, nel database le parole iniziano tutte con la lettera MAIUSCOLA "A", se nel campo di ricerca digito ad es. Alberto mi visualizza l'elenco.. mentre se digito alberto non mi visualizza nulla.

    Ho letto che la funzione javascript Selector.CASE_INSENSITIVE_CLASS_NAMES serve per la distinzione tra maiuscole e minuscole è così?

    chi mi da una mano a risolvere questo problema.

    la pagina JS è questa:


    codice:
    // global variables
    var acListTotal   =  0;
    var acListCurrent = -1;
    var acDelay		  = 500;
    var acURL		  = null;
    var acSearchId	  = null;
    var acResultsId	  = null;
    var acSearchField = null;
    var acResultsDiv  = null;
    
    function setAutoComplete(field_id, results_id, get_url)
    {
    
    	// initialize vars
    	acSearchId  = "#" + field_id;
    	acResultsId = "#" + results_id;
    	acURL 		= get_url;
    
    	// create the results div
    	$("#auto").append('<div id="' + results_id + '"></div>');
    
    	// register mostly used vars
    	acSearchField	= $(acSearchId);
    	acResultsDiv	= $(acResultsId);
    
    	// reposition div
    	repositionResultsDiv();
    	
    	// on blur listener
    	acSearchField.blur(function(){ setTimeout("clearAutoComplete()", 200) });
    
    	// on key up listener
    	acSearchField.keyup(function (e) {
    
    		// get keyCode (window.event is for IE)
    		var keyCode = e.keyCode || window.event.keyCode;
    		var lastVal = acSearchField.val();
    
    		// check an treat up and down arrows
    		if(updownArrow(keyCode)){
    			return;
    		}
    
    		// check for an ENTER or ESC
    		if(keyCode == 13 || keyCode == 27){
    			clearAutoComplete();
    			return;
    		}
    
    		// if is text, call with delay
    		setTimeout(function () {autoComplete(lastVal)}, acDelay);
    	});
    }
    
    // treat the auto-complete action (delayed function)
    function autoComplete(lastValue)
    {
    	// get the field value
    	var part = acSearchField.val();
    
    	// if it's empty clear the resuts box and return
    	if(part == ''){
    		clearAutoComplete();
    		return;
    	}
    
    	// if it's equal the value from the time of the call, allow
    	if(lastValue != part){
    		return;
    	}
    
    	// get remote data as JSON
    	$.getJSON(acURL + part, function(json){
    
    		// get the total of results
    		var ansLength = acListTotal = json.length;
    
    		// if there are results populate the results div
    		if(ansLength > 0){
    
    			var newData = '';
    
    			// create a div for each result
    			for(i=0; i < ansLength; i++) {
    				newData += '<div class="unselected">' + json[i] + '</div>';
    			}
    
    			// update the results div
    			acResultsDiv.html(newData);
    			acResultsDiv.css("display","block");
    			
    			// for all divs in results
    			var divs = $(acResultsId + " > div");
    		
    			// on mouse over clean previous selected and set a new one
    			divs.mouseover( function() {
    				divs.each(function(){ this.className = "unselected"; });
    				this.className = "selected";
    			})
    		
    			// on click copy the result text to the search field and hide
    			divs.click( function() {
    				acSearchField.val(this.childNodes[0].nodeValue);
    				clearAutoComplete();
    			});
    
    		} else {
    			clearAutoComplete();
    		}
    	});
    }
    
    // clear auto complete box
    function clearAutoComplete()
    {
    	acResultsDiv.html('');
    	acResultsDiv.css("display","none");
    }
    
    // reposition the results div accordingly to the search field
    function repositionResultsDiv()
    {
    	// get the field position
    	var sf_pos    = acSearchField.offset();
    	var sf_top    = sf_pos.top;
    	var sf_left   = sf_pos.left;
    
    	// get the field size
    	var sf_height = acSearchField.height();
    	var sf_width  = acSearchField.width();
    
    	// apply the css styles - optimized for Firefox
    	acResultsDiv.css("position","absolute");
    	acResultsDiv.css("left", sf_left - 2);
    	acResultsDiv.css("top", sf_top + sf_height + 5);
    	acResultsDiv.css("width", sf_width - 2);
    }
    
    
    // treat up and down key strokes defining the next selected element
    function updownArrow(keyCode) {
    	if(keyCode == 40 || keyCode == 38){
    
    		if(keyCode == 38){ // keyUp
    			if(acListCurrent == 0 || acListCurrent == -1){
    				acListCurrent = acListTotal-1;
    			}else{
    				acListCurrent--;
    			}
    		} else { // keyDown
    			if(acListCurrent == acListTotal-1){
    				acListCurrent = 0;
    			}else {
    				acListCurrent++;
    			}
    		}
    
    		// loop through each result div applying the correct style
    		acResultsDiv.children().each(function(i){
    			if(i == acListCurrent){
    				acSearchField.val(this.childNodes[0].nodeValue);
    				this.className = "selected";
    			} else {
    				this.className = "unselected";
    			}
    		});
    
    		return true;
    	} else {
    		// reset
    		acListCurrent = -1;
    		return false;
    	}
    }

  2. #2
    Utente di HTML.it L'avatar di Lino80
    Registrato dal
    Oct 2005
    Messaggi
    1,560
    Lo script è questo http://sks.com.np/article/9/ajax-aut...php-mysql.html

    chi mi da una mano a inserire o modificare il codice per far leggere le lettere digitando sia in maiuscolo che in minuscolo?

    grazie mille

  3. #3
    Utente di HTML.it L'avatar di Lino80
    Registrato dal
    Oct 2005
    Messaggi
    1,560
    up

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 © 2025 vBulletin Solutions, Inc. All rights reserved.