YUI 3自动完成文本框值更改

时间:2011-12-08 19:31:15

标签: autocomplete yui yui3

我的问题是我如何能够更改自动填充链接到的文本框中设置的值。我试图做的任务是从YUI 2转换为YUI 3.请不要说我不应该这样做...因为这不是我的选择。我知道......以下代码是之前使用过的代码。我已经拥有自动完成功能,可以完成大部分需要做的事情。只是当它到达field.itemSelectEvent.subscribe(myHandler)部分时,我再也无法获得其他任何工作了。该列表提供了人员信息,但是当选择它时,只需将[object Object]放在文本框中,而不是自动转发到另一个页面的名称。谢谢你的帮助!!!

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);

2 个答案:

答案 0 :(得分:1)

监听select事件,然后在处理程序中获取result对象。其结构在result事件的文档中进行了描述(距select事件略高)。

我通常会从raw对象的result属性中取一个值来粘贴到该字段中。

答案 1 :(得分:1)

票证是{p> resultTextLocator。我所要做的就是返回我想在框中显示的值。

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