2014-10-28 2 views
0

사용자가 항목을 선택하고 ID가 서버로 전송되는 콤보 상자 (ID/이름) 쌍이 필요합니다.JQuery UI 자동 완성 콤보 상자 이름 대신 값 선택

source: function(request, response) { 
       $.ajax({ 
        url: "http://ws.geonames.org/searchJSON", 
        type: "POST", 
        dataType: "jsonp", 
        data: { 
         featureClass: "P", 
         style: "full", 
         username: "andrebarata", 
         maxRows: 12, 
         name_startsWith: request.term 
        }, 
        success: function(data) { 
         response($.map(data.geonames, function(item) { 
          return { 
           label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName, 
           value: item.geonameId 
          } 
         })); 
        } 
       }) 
      }, 

유일한 문제는 다음과 같습니다 콤보 상자가 자동 ​​완성으로 선택하기 위해 아약스 웹 서비스를 호출하는 동시에 다음은이 JSFiddle

에서 나는 거의 작동 예를

의 AJAX 부분입니다 그 값을 선택하면 이름 대신 ID로 값이 변경됩니다.

변경하려면 어떻게해야합니까?

+0

솔루션이 각 자동 완성 항목에 (이름/값) 쌍을 저장 한 다음 필요한 항목을 다시 가져올 수 있는지 궁금합니다 –

답변

1

내가 변경하는 경우 :에 의해 "값 item.geonameId"을 "값 : item.name는"이 일하고 ...

와 ID가 같이 "지오이드"새 속성을 추가 얻을 :

success: function(data) { 
         response($.map(data.geonames, function(item) { 
          return { 
           label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName, 
           value: item.name, 
           geoid: item.geonameId 
          } 
         })); 
        } 
       }) 
      }, 
      select: function(event, ui) { 
       alert(ui.item.value+" , "+ ui.item.geoid); 
+0

예, 팝업 메시지에서 볼 수 있듯이 ID가 손실됩니다. . –

+0

자동 완성 위젯은 (이름/값) 쌍 목록 인 –

+0

이 아닌 단순한 목록 만 저장한다고 생각합니다.하지만 지오이드와 같은 새 속성을 추가하고 ID 데이터를 입력하면됩니다. 그래서 당신은 이것을 가지고 있습니다 : ".. value : item.name, geoid : item.geonameId ..."그리고 경고 메시지에서 : "ui.item.value +", "+ ui.item.geoid" – tordo256

관련 문제