[javascript] Impossible de définir la propriété '_renderItem' de l'auto-complétion de l'interface utilisateur jQuery non définie avec HTML



Answers

J'ai rencontré le même problème ... semble dans les versions ultérieures, il doit être .data("ui-autocomplete") au lieu de .data("autocomplete")

Question

J'utilise le code suivant pour rendre mes éléments d'auto-complétion jQuery UI en HTML. Les éléments s'affichent correctement dans le contrôle de saisie semi-automatique, mais je continue d'obtenir cette erreur javascript et je ne peux pas la dépasser.

Firefox n'a pas pu convertir l'argument JavaScript

Chrome Impossible de définir la propriété '_renderItem' de undefined

  donor.GetFriends(function (response) {
    // setup message to friends search autocomplete
    all_friends = [];
    if (response) {
        for (var i = 0; i < response.all.length - 1; i++) {                
                all_friends.push({
                    "label":"<img style='padding-top: 5px; width: 46px; height: 46px;' src='/uploads/profile-pictures/" +
                        response.all[i].image + "'/><br/><strong style='margin-left: 55px; margin-top: -40px; float:left;'>" +
                        response.all[i].firstname + " " + response.all[i].lastname + "</strong>",

                    "value":response.all[i].firstname + " " + response.all[i].lastname,
                    "id":response.all[i].user_id});
            }
        }        

    $('#msg-to').autocomplete({
        source:all_friends,
        select:function (event, ui) {               
            // set the id of the user to send a message to
            mail_message_to_id = ui.item.id;
        }

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

Je ne sais pas pourquoi il lance cette erreur, ou ce que je dois faire pour le franchir ... Toute aide est appréciée.




Poster pour le bien de toute personne qui trébuche à travers ce poste.

Cette erreur se manifeste également si vous ne placez pas le fichier .autocomplete dans l'événement de document prêt.

Le code ci-dessous échouera:

<script type="text/javascript">
    $('#msg-to').autocomplete({
        source:all_friends,
        select:function (event, ui) {               
            // set the id of the user to send a message to
            mail_message_to_id = ui.item.id;
        }

    }).data("autocomplete")._renderItem = function (ul, item) {
        return $("<li></li>")
            .data("item.autocomplete", item)
            .append($("<a></a>").html(item.label))
            .appendTo(ul);
    };
</script>

tandis que le code ci-dessous fonctionnera:

<script type="text/javascript">
    $(function(){
        $('#msg-to').autocomplete({
            source:all_friends,
            select:function (event, ui) {               
                // set the id of the user to send a message to
                mail_message_to_id = ui.item.id;
            }

        }).data("autocomplete")._renderItem = function (ul, item) {
            return $("<li></li>")
                .data("item.autocomplete", item)
                .append($("<a></a>").html(item.label))
                .appendTo(ul);
        };
    });
</script>



J'utilise jquery 1.10.2 et cela fonctionne en utilisant:

.data( "custom-catcomplete" )._renderItem = function( ul, item ) {
  return $( "<li>" )
    .data( "ui-autocomplete-item", item )
    .append( "<a>" + item.label + "<br>" + item.desc + "</a>" )
    .appendTo( ul );
};



Links