2009-03-02 18 views
1

上記の最後の行の$ hidden.val()がundefinedを返す理由は何ですか? selected.data [1]に整数値が含まれていることを確認しました。jQueryの.val()関数を理解する助けが必要です

編集#1:コメントあたりいくつかの追加のコンテキスト:(隠された$が非表示の入力フィールドです)

$.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); 
     }); 

と...

$.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()); 

編集#2:詳細詳細...私は、複数のテキストボックスコントロール(それぞれがオートコンプリートを実装している)のフォームにjQueryオートコンプリート拡張を使用しようとしています。各テキストボックスの横にあるフォームには、フォームに選択されたアイテムの値を見つけてdbに保存する必要のあるハンドラ関数にフォームを送信する別個のボタンがあります。私がこれについて考える方法は、選択された値を保持するためにフォーム上に隠しフィールドを含めることでした。

+0

ここで、$ hiddenを設定しますか? –

+0

私はこの質問に答えられるために$ hiddenが正確に何を指していたのかを知る必要があります –

+0

@matt b:私があなたが求めていた "$"を編集したと思います。それは意図的であったのか、間違っていたのか – Tomalak

答えて

1

ありがとうPaolo Bergantino。私は隠されたフィールドのidの前に#を付けて隠された最初のものを渡していないことを発見したので、$ hiddenは決して正しく設定されませんでした。オートコンプリートは埋め込みリソースとしてascxコントロールの内側にあるため、デバッグするのは難しかったです。一度私は隠された価値が#それが適切に働いていたことを保証しました。

0

$ hiddenをチェックされていないチェックボックスにすることはできますか?

+0

$ hiddenは隠された入力フィールドです –

関連する問題