2011-03-02 16 views
14

Hemos probado la función Autocompletar de Jquery UI (jquery-ui-1.8.10.custom.min.js) en una simple página HTML que funcionó.autocompletar "no es una función"

Copiamos el mismo código en un Control de usuario de Asp.net y deja de funcionar. El error de Javascript dice "$ searchBox.autocomplete no es una función".

Este control de usuario se está utilizando en un proyecto Asp.net Sitefinity 3.7. En la página tiene un ScriptManager. No estoy seguro de qué más puedo agregar ...

¿Alguien sabe qué está pasando?

ammend:

<script src="/js/jquery-1.5.min.js" type="text/javascript"></script> 
<script src="/js/jquery-ui-1.8.10.custom.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     var termTemplate = "<span class='ui-autocomplete-term'>%s</span>"; 

     $('input#searchInput').autocomplete({ 
      source: ['johannesburg z', 'johannesburg x', 'johannesburg v', 'johannesburg b', 'johannesburg a', 'johannesburg q', 'johannesburg u', 'johannesburg y', 'johannesburg o', 'johannesburg p'], 
      minLength: 3, 
      open: function (e, ui) { 

       var 
       acData = $(this).data('autocomplete'), 
       styledTerm = termTemplate.replace('%s', acData.term); 

       acData 
       .menu 
       .element 
       .find('a') 
       .each(function() { 
        var me = $(this); 
        me.html(me.text().replace(acData.term, styledTerm)); 
       }); 

      } 
     }); 
    }); 
</script> 
<div class="outerSearchBox"> 
    <div class="searchFieldWrapper"> 
     <input id="searchInput" type="text" class="searchField" /><a class="searchButton">SEARCH 
     </a> 
     <div class="searchSugContainer"> 

Gracias.

+0

Encontré mi respuesta. Estaba cargando la biblioteca jQuery dos veces. http://stackoverflow.com/questions/19591155/autocomplete-is-not-a-function-error – Orin

Respuesta

13

Ese error generalmente significa que jquery o el complemento aún no se ha cargado. Compruebe si está llamada a función no está siendo golpeado antes de cargar el documento:

$(function(){ 
    var $searchBox = $('#mysearchBox'); 
    $searchBox.autocomplete(...); 
}); 

también comprobar que la ruta a los archivos JavaScript son correctos. Firebug o las herramientas de desarrollador de google chrome son útiles para verificar estos dos problemas.

+1

He confirmado con Firebug que el archivo se está descargando y que el orden es correcto. JQuery, JQuery UI, luego uso autocompletar. – Jacques

+1

Es posible que deba publicar algo más de su código, luego – Phil

+0

He editado mi pregunta y le he añadido un fragmento de código. – Jacques

1

Esto se debe a un conflicto con el uso de jQuery por parte de Sitefinity.

Si mueve sus referencias de script para jQuery al final de la página antes de la etiqueta de formulario de cierre. Esto resolverá el problema en Sitefinity 4.0, pero sospecho que también solucionará este problema en Sitefinity 3.7.

9

Podría ser:

  1. El orden en que se cargan jquery.js.
  2. Duplicate jquery.js incluye en la misma página.
3

Quizás intente utilizar el jQuery.noConflict() method para una prueba. Básicamente, solo hace que use un alias diferente para jQuery. Esto funcionó para mí en SF4.3.

var j = jQuery.noConflict(); 
// Do something with jQuery 
j("div p").hide(); 
// Do something with another library's $() 
$("content").style.display = 'none'; 
2

Tuve este problema y lo que sucedía era que mi archivo jQuery se cargaba dos veces. Más o menos esto fue en mi cabeza:

<script src="assets/js/jquery.min.js"></script> 
<script src="js_css/jquery-ui.min.js" ></script> 

Y luego tuve una llamada AJAX que carga más partes de mi documento y no había otra: Etiqueta

<script src="assets/js/jquery.min.js"></script> 

guión en mis resultados AJAX y estaba $ .hmtl() mis resultados a mi documento. Al hacer esto, estamos redefiniendo prácticamente todas las var que jquery-ui.min.js alteraron o aprovecharon.