2011-12-08 5 views
1

내가 가진 질문은 자동 완성이 연결된 텍스트 상자에 설정된 값을 어떻게 변경할 수 있는지입니다. 제가하려는 일은 YUI 2에서 YUI 3로 전환하는 것입니다. 제발하지 말아야한다고 말하지 마세요. 제 선택이 아니기 때문에. 나는 알고있다 ... 아래의 코드는 이전에 사용 된 코드이다. 나는 이미해야 할 일의 대부분을 수행하는 자동 완성 기능을 가지고있다. 그것은 필드에 도착하는 순간입니다 .itemSelectEvent.subscribe (myHandler) 부분에서 더 이상 작업 할 수 없습니다. 목록에는 사람 정보가 표시되지만, 선택하면 [object Object]를 이름 대신 텍스트 상자에 넣으면 자동으로 다른 페이지로 전달됩니다. 도와 줘서 고마워 !!!YUI 3 자동 완성 텍스트 상자 값 변경

var field = new YAHOO.widget.AutoComplete("webUserSearch", 
    "webUserSearchContainer", oDS); 
field.highlightClassName = "autoCompleteHighlight"; 
field.useShadow = true; 
field.queryMatchContains = true; 
field.maxResultsDisplayed = 20; 
field.resultTypeList = false; 

field.formatResult = function(oResultData, sQuery) { 
    return "<div class=\"result\"><u style=\"cursor:pointer\">" 
     + oResultData['Last Name'] + ", " + oResultData['First Name'] 
     + "</u> (" + oResultData['User Name'] + ")</div>"; 
}; 

var myHandler = function(sType, aArgs) { 
    var theField = aArgs[0]; 
    var selectedElement = aArgs[1]; 
    var repObject = aArgs[2]; 
    theField.getInputEl().value = repObject['Last Name'] + ", " 
     + repObject['First Name']; 

    var newTabURL = <URL Removed for Stack Overflow>; 
    window.location.href = newTabURL; 
}; 
field.itemSelectEvent.subscribe(myHandler); 
+0

완전히 YUI2에서 YUI3으로 이동해야합니다! 그것은 가치. – juandopazo

답변

1

resultTextLocator 티켓이었습니다. 내가해야 할 일은 상자에 표시하고 싶은 값을 반환하는 것뿐이었습니다.

resultTextLocator : function (result) { 
         return result["Last Name"] + 
         ', ' + 
         result["First Name"]; 
        } 
1

은 그에 대한 핸들러에서 당신이 result 개체를 얻을 것이다는 select 이벤트를 수신. 그 구조는 result 이벤트의 문서에 설명되어 있습니다 (select 이벤트 약간 있음).

나는 일반적으로 result 개체의 raw 속성 값을 필드에 고정시킵니다.

관련 문제