2011-12-08 49 views
1

我的問題是我將如何更改自動完成鏈接到的文本框中設置的值。我試圖做的任務是從YUI 2轉換到YUI 3.請不要說我不應該這樣做......因爲這不是我的選擇。我知道...下面的代碼是以前使用過的。我已經擁有了自動完成功能,可以完成它需要做的大部分工作。只是當它到達field.itemSelectEvent.subscribe(myHandler)部分時,我無法再獲得其他任何工作。該列表與人員信息一起提供,但是在選擇時只將[對象對象]放在文本框中,而不是自動轉發到另一頁面的名稱。感謝您的幫助!!!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

監聽select事件,然後在處理程序,你會得到一個result對象。其結構在result事件的文檔中進行了描述(與select事件稍微有點相似)。

我通常從result對象上的raw屬性中取出一個值來堅持到該字段中。