.autocomplete n’est pas une fonction Erreur

ci-dessous est mon code

   

Et mon code HTML est

 

Et ma fonction est

  $(function(){ $( "#searcharea" ).autocomplete({ source: "suggestions.php" }); $( "#searchcat" ).autocomplete({ source: "suggestions1.php" }); });  

J’ai inclus cette page dans un fichier séparé avec le code de recherche de mon site Web et je l’ai intégrée dans différentes pages. Sur ma page d’index, elle me suggère des valeurs provenant de fichiers sources, mais sur d’autres pages, elle me donne une erreur de frappe en ligne.

 $( "#searcharea" ).autocomplete({ 

Le lien de mon site Web est: http://www.jodhpuryp.in/

Ceci est la source de ma boîte d’autosuggestion http://api.jqueryui.com/autocomplete/

Quelqu’un peut-il me dire pourquoi cette erreur apparaît sur d’autres pages de mon site Web alors qu’elle fonctionne sur la page d’index.Toute aide est appréciée.Merci

    Trouvé le problème, je comprenais un autre fichier jquery pour mon traducteur google, ils étaient en conflit les uns avec les autres et entraînaient le chargement de la fonction de saisie semi-automatique.

    On dirait que l’auto-complétion est appelée avant que la bibliothèque qui la définit ne soit réellement chargée – si cela a du sens?

    Si votre script est en ligne plutôt que référencé, déplacez-le au bas de la page. Ou bien (mon option préférée) place le script dans un fichier .js externe, puis le référence:

        

    Édition: si vous externalisez votre script, assurez-vous qu’il est référencé APRÈS toute bibliothèque JQuery sur laquelle il s’appuie 🙂

    Notez que si vous n’utilisez pas la bibliothèque complète de l’interface utilisateur jQuery, cela peut être déclenché s’il vous manque le widget, le menu, la position ou le kernel. Il peut y avoir différentes dépendances selon votre version de jQuery UI

    Pour mon cas, un autre membre de mon équipe a inclus une autre version de jquery.js lorsqu’il a ajouté bootstrap.min.js. Après avoir supprimé le fichier jquery.js supplémentaire, le problème est résolu.

    Charger la bibliothèque jQuery avant que la bibliothèque Angularjs m’ait aidé.

          

    Vous appelez la fonction avant que la page ne charge jQuery. Il est toujours conseillé d’utiliser jQuery dans $ (document) .ready (function () {// votre code ici})

    Dans ton cas:

     $(document).ready(function(){ $(function(){ $( "#searcharea" ).autocomplete({ source: "suggestions.php" }); $( "#searchcat" ).autocomplete({ source: "suggestions1.php" }); }); 

    });

    Mon problème a fini par être Visual Studio, capturant une exception non gérée et empêchant le script de s’exécuter davantage. Parce que je courais dans l’IDE, il semblait y avoir un problème alors qu’il n’y en avait pas. La saisie semi-automatique fonctionnait parfaitement. J’ai ajouté un bloc try / catch et cela a rendu l’IDE heureux.

      $.ajax({ url: "/MyController/MyAction", type: "POST", dataType: "json", data: { prefix: request.term }, success: function (data) { try { response($.map(data, function (item) { return { label: item.Name, value: item.Name }; })) } catch (err) { } } }) 

    J’ai cette erreur de travail dans ASP.net. Lorsque j’ai lancé l’application à partir de visual studio, tout fonctionnait parfaitement, mais lorsque j’ai publié le projet et que je l’ai testé, le message d’erreur “La saisie semi-automatique n’est pas une fonction” dans le débogueur chrom Inspect. J’ai découvert que les différences entre deux environnements étaient causées par une définition dans web.config. dans la balise de compilation. Si assign debug = “false”, toutes les définitions de bundel sont exécutées et la compilation est réalisée en tant que version. Si debug = true “, la compilation est destinée à une étape de débogage qui n’inclut pas la librairie Js de groupage ni de minifyning. Par conséquent, les déférences entre les environnements.

         

    En outre, en examinant ces deux environnements, nous avons constaté que pour un environnement de débogage partout (_Layout.cshtml) @ Scripts.Render (“~ / bundles / jquery”) se trouvait dans le code, où (sous APP_Start) BundleConfig.cs
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Static/js/lib/jquery-{version}.js", "~/Static/js/lib/jquery-ui.js"));

    il a rendu comme:

       

    et l’autre environnement (debug = false)

      

    En mode débogage cela fonctionne et l’autre a eu le problème.

    En regardant js lib, j’ai vu deux fichiers de jquery-ui:

    jquery-ui.js jquery-ui.min.js

    il s’avère que les deux proviennent par défaut du modèle du nouveau projet MVC. Lorsque le problème jquery-ui.min.js a été supprimé de la bibliothèque, le problème a été résolu.

    Je pense que même si jquery-ui.js a été défini dans BundleConfig.cs, jquery-ui.min.js a été pris.

    À propos, jquery-ui.min.js n’incluait pas la fonction de composition automatique associée à jquery-ui.js qui l’incluait.

    à votre santé.

    Si votre page comporte une section pour les scripts telle que la suivante, assurez-vous de vous référer à votre bibliothèque Jquery depuis cette section.

     @section Scripts {  } 

    quand vous voyez ce problème, mettez toujours votre fonction autocomplete dans la fonction keyup et assurez-vous que vous avez ajouté les bibliothèques

     $( "#searcharea" ).keyup(function(){ $( "#searcharea" ).autocomplete({ source: "suggestions.php" }); });