求助 谁用过 YUI AutoComplete,我用的是AutoComplete Control: FunctionDataSource to Search Multiple Fields of an Address Book at Runtime,但是提示oAC.itemSelectEvent is null,怎么解决?还有可不可以提供一个成功的例子,在线等,急用!!!谢谢!!! 以下是代码
function  projectMsg(id,gctId,taskName){        this.id=id;        this.projectGctId=gctId;        this.projectName=taskName;    }              //myIput  projectResultConttainer    //myAutoComplete-->searchProject    //myInput-->myIput    //myContainer-->projectResultConttainer   function autoComplement(projectResultStr){       var nameList=projectResultStr.split('||||');       alert("projectResultStr="+projectResultStr);       alert("flagSearch="+flagSearch);       var inputContacts=new Array(nameList.length/3|0);;           for(var i=0;i<nameList.length;i++){                var gctId;                 var taskName;                 var projectDetail;                 var useTime;               if(flagSearch.length>4){                   gctId=nameList[i];                     taskName=nameList[++i];                     projectDetail=nameList[++i];                     useTime=nameList[++i];               }else{                     gctId=nameList[i];                     taskName=nameList[++i];                     projectDetail=nameList[++i];               }               var projectRecord=new projectMsg(i,gctId,taskName);               inputContacts[i]=projectRecord;           }                  YAHOO.example.FnMultipleFields = function(){             var myContacts = inputContacts;                     // Define a custom search function for the DataSource             var matchNames = function(sQuery) {                  // Case insensitive matching                  var query = sQuery.toLowerCase(),                      contact,                      i=0,                      l=myContacts.length,                      matches = [];                               // Match against each name of each contact                  for(; i<l; i++) {                      contact = myContacts[i];                      if((contact.gctId.toLowerCase().indexOf(query) > -1) ||                          (contact.taskName.toLowerCase().indexOf(query) > -1)) {                           matches[matches.length] = contact;                      }                   }                        return matches;             };                   // Use a FunctionDataSource             var oDS = new YAHOO.util.FunctionDataSource(matchNames);             oDS.responseSchema = {                 fields: ["id", "gctId", "taskName"]             }                   // Instantiate AutoComplete              var oAC = new YAHOO.widget.AutoComplete("myInput", "projectResultConttainer", oDS);              oAC.useShadow = true;              oAC.resultTypeList = false;                                 // Custom formatter to highlight the matching letters              oAC.formatResult = function(oResultData, sQuery, sResultMatch) {              var query = sQuery.toLowerCase(),                  fname = oResultData.gctId,                  lname = oResultData.taskName,                  //nname = oResultData.nname || "",  Guard against null value                  query = sQuery.toLowerCase(),                  fnameMatchIndex = fname.toLowerCase().indexOf(query),                  lnameMatchIndex = lname.toLowerCase().indexOf(query),                  //nnameMatchIndex = nname.toLowerCase().indexOf(query),                  displayfname, displaylname;// displaynname;                               if(fnameMatchIndex > -1) {                      displayfname = highlightMatch(fname, query, fnameMatchIndex);              } else {                        displayfname = fname;              }                   if(lnameMatchIndex > -1) {                  displaylname = highlightMatch(lname, query, lnameMatchIndex);              } else {                  displaylname = lname;              }                   <%--if(nnameMatchIndex > -1) {                  displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";              } else {                  displaynname = nname ? "(" + nname + ")" : "";              } --%>                 return displayfname + " " + displaylname ;//+ " " + displaynname;              };                       // Helper function for the formatter              var highlightMatch = function(full, snippet, matchindex) {                  return full.substring(0, matchindex) +                      "<span class='match'>" +                      full.substr(matchindex, snippet.length) +                      "</span>" +                     full.substring(matchindex + snippet.length);              };                   // Define an event handler to populate a hidden form field              // when an item gets selected and populate the input field              var myHiddenField = YAHOO.util.Dom.get("myHidden");              var myHandler = function(sType, aArgs) { //请问这里的两个参数从哪里来的?                 var myAC = aArgs[0]; // reference back to the AC instance                  var elLI = aArgs[1]; // reference to the selected LI element                  var oData = aArgs[2]; // object literal of selected item's result data                               // update hidden form field with the selected item's ID                  myHiddenField.value = oData.id;                                myAC.getInputEl().value = oData.fname + " " + oData.lname ;//                  + (oData.nname ? " (" + oData.nname + ")" : "");              };              //oAC.itemSelectEvent = new YAHOO.util.CustomEvent("itemSelect", this);             alert("Company ID: " + myHiddenField.value);             oAC.itemSelectEvent.subscribe(myHandler);//报 oAC.itemSelectEvent is null是怎么回事?                      return {                  oDS: oDS,                  oAC: oAC               };          }();