2009-05-14 7 views
3

Alle,JQuery automatische Vervollständigung in Dialog Fehlern

ich die JQuery Autocomplete-Plugin 1.0.2 in einem JQuery UI Dialog verwenden. Leider gibt es 2 Szenarien, die Skriptfehler in IE und FireFox verursachen. Ich werde FireFox Firebug Fehler zur Verfügung stellen, da sie beschreibender sind.

First off, hier ist der JQuery Autocomplete-Skript, das für die Auswahl mehrerer Namen erlaubt:

var queues = <% Html.RenderAction("AvailableQueues"); %>; 
$($.jqId("requestQueuesText"), $theForm).autocomplete(queues, { 
    minChars: 1, 
    formatItem: function(row) { 
     return row.Description;     
    }, 
    multiple: true, 
    multipleSeparator: ";" 
}); 

Nun, hier sind die beiden Szenarien, die die Fehler auftreten verursachen:


1) Geben Sie ein Leerzeichen "" vor allem anderen und ich bekomme sofort

Fehler: currentValue ist undefined; onChange() jquery.a ... mplete.js (Zeile 239); [Zu diesem Fehler Pause] if (currentValue.length> = options.minChars) {

2) Dialog schließen, während die automatische Vervollständigung der Dropdown-Liste geöffnet ist, aber ohne Auswahl eines Eintrages

* Dies ist die ist berichtet Bug, dass ich beheben soll. Nach dem Schließen des Dialogfelds bleibt die Autocomplete-Box für einige Millisekunden bis zu einigen Sekunden in der Ansicht. Das Hauptziel besteht darin, dass die Dropdown-Liste für die automatische Vervollständigung gleichzeitig mit dem Schließen des Dialogfelds geschlossen wird, ohne dass Fehler zurückgegeben werden. Ich wette, dass die Lösung der Fehler das Gesamtproblem lösen wird.

ERROR: abgefangene Ausnahme: [Exception ... "Component zurückgegeben Fehlercode: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLTextAreaElement.setSelectionRange]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" Ort: „JS Rahmen :: http://localhost:2659/Scripts/jquery.autocomplete.js: : anonym :: Linie 752" Daten: no] von


Nur über die autocomplete documentation suchen, ich sehe, dass ich anders die FORMAT Option verwenden müssen können.

Auch ich stieß auf BGIFRAME, die möglicherweise auf die eine oder andere Weise helfen schien.

Vielen Dank im Voraus für jede Hilfe!

Antwort

1

konnte ich das erste Problem lösen, indem ein keydown Ereignis an den zur automatischen Vervollständigung Code Verkettungs:

var queues = <% Html.RenderAction("AvailableQueues"); %>; 
    $($.jqId("requestQueuesText"), $theForm).autocomplete(queues, { 
     minChars: 1, 
     formatItem: function(row) { 
      return row.Description;     
     }, 
     multiple: true, 
     multipleSeparator: ";", 
     selectFirst: false 
    }).keydown(function(event) { 
     if (this.value != "" && this.value.charAt(this.value.length-1) != ";") 
      return true; 

     var keycode = $.browser.msie ? event.keyCode : event.which; 
     return !/\s/.test(String.fromCharCode(keycode)); 
    }); 

Dieses Leerzeichen nicht zulassen wird, wenn es anfänglich in den Textbereich eingeben und auch Leerzeichen nach dem Semikolon verhindern (multipleSeparator).

Immer noch Probleme mit # 2. Ich denke, ich muss einen Hover-oder Klick-Ereignis auf Schließen Eigenschaft oder die $ ('a.close-trigger') hinzufügen, die Fokus() aus dem Textbereich entfernt, die wiederum die Autocomplete-Dropdown-Liste verschwindet ...Noch nicht genau wissen, wie das mit dem folgenden Dialog Code auszuführen:

$(".requestLink").click(function(event) { 
     event.preventDefault(); 
     var $this = $(this); 
     $this.addClass("loading"); 
     $.get(this.href, function(data) { 
      $this.removeClass("loading"); 
      var $req = $("<div></div>").dialog({ 
       autoOpen: true, 
       height: 650, 
       width: 750, 
       modal: true, 
       title: "Request", 
       overlay: { "background-color": "#d2d2d2", "opacity": "0.40"} 
      }).html(data); 
     }); 
    }); 
+0

konnte ich den zweiten Teil meiner lächerlich langen Frage, um herauszufinden. Ziemlich viel, ich brauchte nur das closed-Ereignis des Dialogs zu verwenden und eine Methode verwischen jedes Feld, das das Autocomplete-Plugin verwendet. Ein vollständiges Beispiel der Lösung finden Sie unter http://www.danielmckenzie.net/post/2009/05/18/Forcing-blur()-on-JQuery-Autocomplete-Plugin-when-use-in-JQuery- UI-Dialog.aspx. – BueKoW