2010-12-14 51 views
0

Lorsque j'utilise jquery ui autocomplete version 1.8.5 avec jquery mobile alpha 2. Je reçois une erreur lorsque je clique sur un élément de la liste de saisie semi-automatique:

$this.attr("href") is undefined.

Est-ce que quelqu'un connaît un correctif pour cela?

ÉDITÉE:

<html> 
    <head> 
     <link rel="stylesheet" type="text/css" href="css/ui-lightness/jquery-ui-1.8.custom.css"> 
     <link rel="stylesheet" type="text/css" href="css/autocomplete.css"> 
    </head> 
    <body> 

     <div id="formWrap"> 
      <form id="messageForm" action="#"> 
       <fieldset> 
        <label id="toLabel">select:</label> 
        <div id="friends" class="ui-helper-clearfix"> 

         <input id="to" type="text"> 
        </div> 

       </fieldset> 
      </form> 
     </div> 
     <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> 
     <script type="text/javascript" src="js/jquery.mobile-1.0a2.js"></script> 
     <script type="text/javascript" src="js/jquery-ui-1.8.custom.min.js"></script> 


     <script type="text/javascript"> 
      $(function(){ 

       var availableTags = [ 
         "ActionScript", 
         "AppleScript", 
         "Asp", 
         "BASIC", 
         "C", 
         "C++", 
         "Clojure", 
         "COBOL", 
         "ColdFusion", 
         "Erlang", 
         "Fortran", 
         "Groovy", 
         "Haskell", 
         "Java", 
         "JavaScript", 
         "Lisp", 
         "Perl", 
         "PHP", 
         "Python", 
         "Ruby", 
         "Scala", 
         "Scheme" 
        ]; 


       //attach autocomplete 
       $("#to").autocomplete({    

        source:availableTags 
        , 

        //define select handler 
        select: function(e, ui) { 
         var contact = ui.item.value; 
         createSpan(contact); 
         $("#to").val("").css("top", 2); 
         return false; 
        }   
       }); 

       }); 

      function createSpan(contact){ 
       //create formatted friend    
       span = $("<span>").text(contact)    
       //add contact to contact div 
       span.insertBefore("#to"); 
      } 
     </script> 

    </body> 
</html> 
+0

lien vers une page qui montre qu'il passe serait utile – naugtur

+0

ne peut pas envoyer l'url depuis que je suis travaille localement. Le code est long. L'exemple peut être une simple saisie semi-automatique jquery qui inclut le 'jquery.mobile-1.0a2.js'. –

+0

Ajout d'un exemple de code ci-dessus. –

Répondre

1

modifié jquery.mobile-1.0a2.js: Ajout d'une vérification pour voir si href est indéfini dans le code

$("a").live("click", function(event) { 
      //(START: My added code) 
      if($(this).attr("href")==undefined){ 
       //for links created for interaction - ignore 
       return false; 
      } 
      //(END: My added code) 
    //Remaining code follows 

Ce résolu le problème.

0

$(this) pas $this.

+0

No. var $ this = $ (this) dans jquery.mobile-1.0a2.js. –

1

Hey bonbons, merci de m'indiquer dans la bonne direction.

Je trouve qu'il est préférable de surcharger le code jquery ui plutôt que de modifier directement le code source mobile de jquery (pour des raisons de maintenabilité). Ce qui suit remplace la méthode jquery-ui qui restitue chaque élément dans la liste de saisie semi-automatique; il ajoute un attribut href avec la valeur de '#' à l'élément d'ancrage en cours de création. Cela devrait éviter l'erreur href non définie:

$('#to').data("autocomplete")._renderItem = function(ul, item) { 
return $("<li></li>") 
    .data("item.autocomplete", item) 
    .append($("<a></a>").attr({href: '#'}).html(item.label)) 
    .appendTo(ul); 

}