2011-12-08 25 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属性中取出一个值来坚持到该字段中。