Eine Frage zu diesem Autosuggest

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Eine Frage zu diesem Autosuggest

    Ich versuche gerade dieses Autosuggest Script in meine Webseite einzubauen. An sich funktioniert es wunderbar. Ich habe bloss ein Problem.
    Wenn ich mit der Pfeil-Taste auf der Tastatur nach unten ein Vorschlag auswähle , wird das Formular sofort abgeschickt. Kann mir jemand sagen wie man das in
    diesem Javascript abschaltet ? Der Vorschlag soll erst einfach nur in das Textfeld geladen werden.

    Das Script stammt übrigens von dieser Quelle:
    Ajax AutoSuggest AutoComplete in Php
    PHP-Code:
    var ajaxObj getAjaxObject(); 

    var 
    targetID = new Array() ; 
    var 
    searchID = new Array() ; 
    var 
    inputID = new Array() ; 

    function 
    autoSuggest(idtargetidsearchidinputide

        
       var 
    keyCode getKeyCode(e'keyup'); 
       if (
    keyCode == 40 || keyCode == 38
       { 
           return 
    false;    
       } 
        
       
    autoSugPointer[id] = 0
        
       
    targetID[id] = targetid
       
    searchID[id] = searchid
       
    inputID[id] = inputid
       
    countSuggestions[id] = 0
        
       var 
    searchInput getElemId(id).value
        
       var 
    url "autosuggest.php"
       var 
    params "input=" searchInput
        
       if (
    trim(searchInput) !== ""
       { 
          
    sendRequest(ajaxObjurlparamshandleSuggestResponseid); 
       } 
       else 
       { 
          
    hideSuggestions();    
       } 


    function 
    handleSuggestResponse(id

       if (
    ajaxObj.readyState == 4
       { 
          if (
    ajaxObj.status == 200
          { 
              try 
              { 
                  var 
    XMLResponse ajaxObj.respon************ML.documentElement
                  
    // work with the xml response 
                  
    var keywordsTag XMLResponse.getElementsByTagName('keywords'); 
                   
                  var 
    suggestions = new Array(); 
                   
                  for (var 
    0keywordsTag.lengthi++) 
                  { 
                     var 
    keywords keywordsTag.item(i).firstChild.data.toString(); 
                     
    suggestions.push(keywords); 
                  } 
                  
    showSuggestions(suggestionsid); 
              } 
              catch(
    e
              { 
                  
    hideSuggestions(id); 
                  if (
    trim(ajaxObj.responseText) !== ""
                  
    alert(ajaxObj.responseText);   
              } 
          } 
       } 



    var 
    countSuggestions = new Array(); 

    function 
    showSuggestions(suggestionsid

       var 
    listWrapID getElemId(targetID[id]); 
       
    listWrapID.style.visibility "visible"
        
       var 
    listID getElemId(searchID[id]); 
       
    listID.innerHTML ""
        
       for(var 
    0suggestions.lengthi++) 
       { 
         
    listID.innerHTML += "<li><a id='"+id "-" +(i+1)+"' href=\"javascript:void(0);\" onclick=\"insertKeyword(this.innerHTML, '"+id+"');\">" suggestions[i] + "</a></li>";       
       }   
        
       
    countSuggestions[id] = i
        


    var 
    autoSugPointer = new Array(); 

    function 
    keyBoardNav(eid


       var 
    keyCode getKeyCode(e'keydown'); 

       if (
    keyCode == 40
       { 
          if (
    autoSugPointer[id] >= && autoSugPointer[id] < countSuggestions[id]) 
          { 
             if (
    autoSugPointer[id] != && autoSugPointer[id] != countSuggestions[id]) 
             { 
                
    revertAutoSuggestKeyNav(autoSugPointer[id], id); 
             } 
             
    autoSugPointer[id] ++; 
             
    changeAutoSuggestKeyNav(autoSugPointer[id], id); 
             if (
    autoSugPointer[id] > 6
             { 
                
    getElemId(searchID[id]).scrollTop 30
             } 
          } 
       } 
       else if (
    keyCode == 38
       { 
          if (
    autoSugPointer[id] > 1
          { 
             
    revertAutoSuggestKeyNav(autoSugPointer[id], id); 
             
    autoSugPointer[id] --; 
             
    changeAutoSuggestKeyNav(autoSugPointer[id], id); 
             if (
    autoSugPointer[id] <= 2
             { 
                
    getElemId(searchID[id]).scrollTop 0
             } 
          } 
       } 
       else if (
    keyCode == 13 && autoSugPointer[id]) 
       { 
          var 
    str getElemId(id "-" autoSugPointer[id]).innerHTML
          
    insertKeyword(strid); 
       } 



    function 
    changeAutoSuggestKeyNav(idID

       
    getElemId(ID "-" id).style.backgroundColor "#555"
       
    getElemId(ID "-" id).style.color "#FFF";        


    function 
    revertAutoSuggestKeyNav(idID

       
    getElemId(ID "-" id).style.backgroundColor "#F9F9F9"
       
    getElemId(ID "-" id).style.color "#006";        



    function 
    hideSuggestions(id

       try 
       { 
       var 
    listWrapID getElemId(targetID[id]); 
       
    listWrapID.style.visibility "hidden";     
       }catch(
    e){} 


    function 
    insertKeyword(strid

        
    hideSuggestions(id); 
        
    getElemId(inputID[id]).value str
        
    getElemId(inputID[id]).focus(); 

    PHP-Code:
    function getAjaxObject() 

      
    // initially set the object to false  
      
    var XMLHttpRequestObject false
      if (
    window.XMLHttpRequest
      { 
          
    // check for Safari, Mozilla, Opera... 
          
    XMLHttpRequestObject = new XMLHttpRequest(); 
      } 
      else if (
    window.ActiveXObject)  
      { 
          
    // check for Internet Explorer 
          
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      if (!
    XMLHttpRequestObject
      { 
          
    alert("Your browser does not support Ajax."); 
          
    // return false in case of failure 
          
    return false
      } 
      
    // return the object in case of success 
      
    return XMLHttpRequestObject



    function 
    sendRequest(xmlHTTPObjecturlparametershandleResponseid

       if(
    xmlHTTPObject
       { 
          
    // continue if the object is idle 
          
    if (xmlHTTPObject.readyState == || xmlHTTPObject.readyState == 0)  
          { 
             
    // open connection and send "GET" request to server 
             
    xmlHTTPObject.open("POST"urltrue); 
             
    // send the appropriate headers 
             
    xmlHTTPObject.setRequestHeader("Content-Type""application/x-www-form-urlencoded"); 
             
    // set the function to be called on a change in ajaxObj state 
             
    xmlHTTPObject.onreadystatechange = function () {handleResponse(id)}; 
             
    // set additional parameters (to be sent to server) to null 
             
    xmlHTTPObject.send(parameters); 
          } 
       } 

    PHP-Code:
    ////////////////////////////////////////////////////////////////////////////////////////////////////// 
    // function to get the code of the key pressed on the keyboard 
    function getKeyCode(eaction)  

       
    = (!e) ? window.event e
       
    code = (e.charCode) ? e.charCode : ((e.keyCode) ? e.keyCode : ((e.which) ? e.which 0)); 
       if (
    e.type == action)  
       { 
           return 
    code
       }  


    /////////////////////////////////////////////////////////////////////////////////////////////////////// 
    // get element by ID 
    function getElemId(id

        if (
    document && document.getElementById(id)) 
        { 
           return 
    document.getElementById(id); 
        } 
        else 
        { 
           return 
    false;     
        } 



    // function to open a popUpWindow 
    var popUpWin false

    function 
    popUpWindow(URLStrlefttopwidthheight



      if(
    popUpWin

      { 

        if(!
    popUpWin.closedpopUpWin.close(); 

      } 

      
    popUpWin open(URLStr'popUpWin''toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+''); 




    // Function to determine browser of the user 
    function Browser() { 

      var 
    uasi

      
    this.isIE    false
      
    this.isNS    false
      
    this.version null

      
    ua navigator.userAgent

      
    "MSIE"
      if ((
    ua.indexOf(s)) >= 0) { 
        
    this.isIE true
        return; 
      } 

      
    "Netscape6/"
      if ((
    ua.indexOf(s)) >= 0) { 
        
    this.isNS true
        return; 
      } 

      
    "Gecko"
      if ((
    ua.indexOf(s)) >= 0) { 
        
    this.isNS true
        return; 
      } 



    // function that will remove all spaces from a string used primarily to check 
    function trim(s

       return 
    s.replace(/(^s+)|(s+$)/g""); 



    // function to check if a url is valid 
    function isValidURL(url){ 
        var 
    RegExp = /^(([w]+:)?//)?(([dw]|%[a-fA-fd]{2,2})+(:([dw]|%[a-fA-fd]{2,2})+)?@)?([dw][-dw]{0,253}[dw].)+[w]{2,4}(:[d]+)?(/([-+_~.dw]|%[a-fA-fd]{2,2})*)*(?(&?([-+_~.dw]|%[a-fA-fd]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/; 
        
    if(RegExp.test(url)){ 
            return 
    true
        }else{ 
            return 
    false
        } 



    // function to check if the email address is valid 
    function isValidEmail(email){ 
        var 
    RegExp = /^((([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+(\.([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+)*)@((((([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.))*([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.)[\w]{2,4}|(((([0-9]){1,3}\.){3}([0-9]){1,3}))|(\[((([0-9]){1,3}\.){3}([0-9]){1,3})\])))$/ 
        
    if(RegExp.test(email)){ 
            return 
    true
        }else{ 
            return 
    false
        } 


  • #2
    Hallo,

    Support für Fremdscripts leistet der jeweilige Anbieter. Falls du selbst noch einen onchange-Event-Handler für das jeweilige Feld definiert hast, sieh dir den mal an, ob der einen submit auslöst.

    Gruß,

    Amica
    Zuletzt geändert von AmicaNoctis; 12.03.2010, 13:29.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Lies bitte unsere Regeln und brich deinen Code entsprechend um, so dass man nicht mehr nach rechts scrollen muss. Danke.

      In dem verlinkten Beispiel steht das Input übrigens gar nicht in einem Formular. Ist das bei dir denn anders, hast du ein Formular drumherum? Reagiert dieses möglicherweise auf die Down-Taste oder Änderungen des Input-Values? Der gepostete Code sendet jedenfalls nichts ab (außer dem Request für die Suggestions).

      Kommentar

      Lädt...
      X