2009-03-02 7 views
1

Was wäre ein Grund, dass $ hidden.val() in der letzten Zeile oben undefined zurückgeben würde? Ich habe überprüft, dass selected.data [1] einen ganzzahligen Wert enthält.Benötigen Sie Hilfe, um jQuery zu verstehen .val() Funktion

Edit # 1: Einige zusätzliche Kontext pro Kommentare: (hidden $ ist ein verstecktes Eingabefeld)

$.fn.extend({ 
    autocomplete: function(urlOrData, hidden, options) { 
     var isUrl = typeof urlOrData == "string"; 
     var $hidden = $(hidden); 
     options = $.extend({}, $.Autocompleter.defaults, { 
      url: isUrl ? urlOrData : null, 
      data: isUrl ? null : urlOrData, 
      delay: isUrl ? $.Autocompleter.defaults.delay : 10, 
      max: options && !options.scroll ? 10 : 150 
     }, options); 

     // if highlight is set to false, replace it with a do-nothing function 
     options.highlight = options.highlight || function(value) { return value; }; 

     // if the formatMatch option is not specified, then use formatItem for backwards compatibility 
     options.formatMatch = options.formatMatch || options.formatItem; 

     return this.each(function() { 
      new $.Autocompleter(this, options, $hidden); 
     }); 

und ...

$.Autocompleter = function(input, options, $hidden) { 
     //... 

     function selectCurrent() { 
      var selected = select.selected(); 
      if (!selected) 
       return false; 

      var v = selected.result; 
      previousValue = v; 

      if (options.multiple) { 
       var words = trimWords($input.val()); 
       if (words.length > 1) { 
        v = words.slice(0, words.length - 1).join(options.multipleSeparator) + options.multipleSeparator + v; 
       } 
       v += options.multipleSeparator; 
      } 


      alert("data going into $hidden: " + selected.data[1]); 

      $hidden.val(selected.data[1]); 

      alert("data now in $hidden: " + $hidden.val()); 

Edit # 2: Mehr Details .... Ich versuche, die jQuery-Autovervollständigung-Erweiterung in einem Formular mit mehreren Textbox-Steuerelementen zu verwenden (jede implementiert die automatische Vervollständigung). Es gibt eine separate Schaltfläche im Formular neben jedem Textfeld, die das Formular an eine Handler-Funktion übermittelt, die den Wert des ausgewählten Elements finden und in der Datenbank speichern muss. Die Art, wie ich darüber nachdachte, bestand darin, ein verstecktes Feld in das Formular einzufügen, um den ausgewählten Wert zu speichern.

+0

Wo setzen Sie $ versteckt? –

+0

Wir müssten wissen, auf was $ hidden genau bezogen ist, um diese Frage beantworten zu können. –

+0

@matt b: Ich glaube, du hast das sehr "$" herausgeschnitten, nach dem du gefragt hast. War das absichtlich oder zufällig? – Tomalak

Antwort

1

Danke Paolo Bergantino. Ich entdeckte, dass ich das Initial nicht mit einem # vor der versteckten Feld-ID versteckt hatte, so dass $ hidden nie richtig eingestellt wurde. Es war schwierig für mich zu debuggen, da die Autovervollständigung in einem ascx-Steuerelement als eingebettete Ressource enthalten ist. Sobald ich sichergestellt habe, dass der Wert von versteckt war einschließlich der # es funktionierte ordnungsgemäß.

0

Könnte $ hidden ein Kontrollkästchen sein, das nicht aktiviert ist?

+0

$ hidden ist ein verstecktes Eingabefeld –

Verwandte Themen