Veröffentlicht 10. Mai 201312 j Hallo zusammen ! ich habe hier gerade ein Stückchen JavaScript Quellcode vor mir und dabei sind mir noch ein paar Kleinigkeiten unklar. Hier der Code (es ist leider etwas mehr Codierung, ich hoffe aber, dass trotzdem jemand drüber lesen mag): Var.Test = { jQuery : {}, l10n : {}, bindTestResult : function(inputField, requestUrl, selectCallback) { var test = Var.Test.createTest(requestUrl, selectCallback); Var.Test.createAutocomplete(inputField, test); }, createAutocomplete : function(inputField, test) { Var.Test.jQuery(inputField).autocomplete(test).data( 'autocomplete')._renderItem = function(ul, item) { Var.Test.jQuery(inputField).removeClass( 'ui-autocomplete-loading'); return Var.Test.jQuery('<li></li>').data( 'item.autocomplete', item).append( '<a>' + item.output + '</a>').appendTo(ul); }; }, createTest: function(requestUrl, selectCallback){ var l10n = Var.Test.l10n; return { minLength : 1, source : function(request, response) { Var.Test.jQuery.ajax({ url : requestUrl, dataType : "jsonp", data : { param : request.term }, success : function(data) { if (data.errorCode == "complex_result") { response([ { output : l10n.tooMuchSuggestions, value : "INVALID" } ]); } else if (data.suggestions.length == 0) { response([ { output : l10n.noSuggestions, value : "INVALID" } ]); } else{ response(data.suggestions); } }, error : function(jqXHR, textStatus, errorThrown) { console.log(textStatus); } }); }, focus : function(event, ui) { if (ui.item.value != "INVALID") { Var.Test.jQuery(this).val(ui.item.output); return false; } else { Var.Test.jQuery(this).val(""); } }, select : function(event, ui) { if (ui.item.value == "INVALID") { Var.Test.jQuery(this).val(""); Var.Test.jQuery(this).blur(); return false; } else { Var.Test.jQuery(this).blur(); Var.Test.jQuery(this).val(ui.item.output); selectCallback(ui.item.value); return false; } } } } }; Was genau wird hier in diesem Fall mit Var.Test= ganz zu Beginn überhaupt erzeugt? Ist das ein Objekt mit den Attributen jQuery, l10n, bindTestResult, createAutocomplete und createTest ? Oder ist das so etwas wie ein Array mit den Feldern jQuery, l10n, bindTestResult, createAutocomplete und createTest ? Das hier ist ist übrigens die Stelle innerhalb meiner XHTML Seite, in der das Objekt ?, Array? oder was auch immer verwendet wird: <h:inputText style="width:100%;" id="testResult" value="#{refParam.XYZ}" onfocus="Var.Test.bindTestResult(this,'#{configuration.requestUrl}',methodXYZ)"> </h:inputText></td> Was wäre super, wenn mir vielleicht jemand kurz erläutern könnte, was genau das Resultat ist, welches hier zurückgeliefert wird? Danke und Gruß Kossy
10. Mai 201312 j Autor Danke für die Antwort ! Sehe ich das dann richtig, dass das JSON Objekt dann die Attribute jQuery, l10n, bindTestResult, createAutocomplete und createTest hat? Und das Objekt Var dann nur dass Attribut Test? Grüße Kossy
10. Mai 201312 j bindTestResult, createAutocomplete und createTest sind Funktionen. Afaik (Achtung solides Halbwissen :>) ist das Ding damit auch kein gültiges JSON Objekt mehr, auch wenn das in diesem Fall vermutlich kein Problem ist. Ob Var nur das Attribut Test hat, kann man an dem Schnipsel nicht erkennen. Bearbeitet 10. Mai 201312 j von rny
12. Mai 201312 j Autor Hallo nochmal, Kann mir vielleicht jemand von euch sagen, was genau dieses ui.item vom JQuery Framework im Detail ist? Ist das quasi eine Art Datenspeicher? Eine Art Datenbestand, der eben zur Laufzeit gefüllt und abgefragt werden kann? Grüße Kossy
12. Mai 201312 j Kann mir vielleicht jemand von euch sagen, was genau dieses ui.item vom JQuery Framework im Detail ist? Das ist nicht jQuery spezifisch: ui ist definiert als function(event, ui) ui ist somit ein Parameter der Funktion, was dort genau als Inhalt drin steckt steht nicht in Deinem geposteten Code.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.