2009-03-02 4 views
1
alert("data going into $hidden: " + selected.data[1]); 

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

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

위의 마지막 행에서 $ 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

우리는이 질문에 대답하기 위해 숨겨진 $가 정확하게 무엇을 의미하는지 알아야합니다. –

+0

@matt b : 당신이 묻고있는 바로 "$"를 편집했다고 믿습니다. 실수로 의도적으로 했습니까? – Tomalak

답변

1

감사합니다. Paolo Bergantino. 나는 숨겨진 필드 id 앞에 #을 붙여 숨겨진 이니셜을 전달하지 않는다는 것을 발견했다. 그래서 $ hidden은 절대로 제대로 설정되지 않았다. autocomplete가 임베디드 리소스로 ascx 컨트롤 안에 있기 때문에 디버깅하기가 어려웠습니다. 일단 내가 숨겨진 가치가 # 제대로 포함되었다는 것을 확신하면.

0

$ hidden을 선택하지 않은 체크 박스로 할 수 있습니까?

+0

$ hidden은 숨겨진 입력 필드입니다. –

관련 문제