📄 autocomplete.js
字号:
YAHOO.widget.AutoComplete.prototype.setBody = function(sBody) {
if(sBody) {
if(this._oContainer._oContent._oBody) {
this._oContainer._oContent._oBody.innerHTML = sBody;
this._oContainer._oContent._oBody.style.display = "block";
this._oContainer._oContent.style.display = "block";
}
}
else {
this._oContainer._oContent._oBody.innerHTML = "";
this._oContainer._oContent.style.display = "none";
}
this._maxResultsDisplayed = 0;
};
/**
* Overridable method that converts a result item object into HTML markup
* for display. Return data values are accessible via the oResultItem object,
* and the key return value will always be oResultItem[0]. Markup will be
* displayed within <li> element tags in the container.
*
* @param {object} oResultItem Result item object representing one query result
* @param {string} sQuery The current query string
* @return {string} HTML markup of formatted result data
*/
YAHOO.widget.AutoComplete.prototype.formatResult = function(oResultItem, sQuery) {
var sResult = oResultItem[0];
if(sResult) {
return sResult;
}
else {
return "";
}
};
/**
* Makes query request to the data source.
*
* @param {string} sQuery Query string.
*/
YAHOO.widget.AutoComplete.prototype.sendQuery = function(sQuery) {
if(sQuery) {
this._sendQuery(sQuery);
}
else {
return;
}
};
/***************************************************************************
* Events
***************************************************************************/
/**
* Fired when the auto complete text input box receives focus. Subscribers
* receive the following array:<br>
* - args[0] The auto complete object instance
*/
YAHOO.widget.AutoComplete.prototype.textboxFocusEvent = null;
/**
* Fired when the auto complete text input box receives key input. Subscribers
* receive the following array:<br>
* - args[0] The auto complete object instance
* - args[1] The keycode number
*/
YAHOO.widget.AutoComplete.prototype.textboxKeyEvent = null;
/**
* Fired when the auto complete instance makes a query to the data source.
* Subscribers receive the following array:<br>
* - args[0] The auto complete object instance
* - args[1] The query string
*/
YAHOO.widget.AutoComplete.prototype.dataRequestEvent = null;
/**
* Fired when the auto complete instance receives query results from the data
* source. Subscribers receive the following array:<br>
* - args[0] The auto complete object instance
* - args[1] The query string
* - args[2] Results array
*/
YAHOO.widget.AutoComplete.prototype.dataReturnEvent = null;
/**
* Fired when the auto complete instance does not receive query results from the
* data source due to an error. Subscribers receive the following array:<br>
* - args[0] The auto complete object instance
* - args[1] The query string
*/
YAHOO.widget.AutoComplete.prototype.dataErrorEvent = null;
/**
* Fired when the auto complete container is expanded. If alwaysShowContainer is
* enabled, then containerExpandEvent will be fired when the container is
* populated with results. Subscribers receive the following array:<br>
* - args[0] The auto complete object instance
*/
YAHOO.widget.AutoComplete.prototype.containerExpandEvent = null;
/**
* Fired when the auto complete textbox has been prefilled by the type-ahead
* feature. Subscribers receive the following array:<br>
* - args[0] The auto complete object instance
* - args[1] The query string
* - args[2] The prefill string
*/
YAHOO.widget.AutoComplete.prototype.typeAheadEvent = null;
/**
* Fired when result item has been moused over. Subscribers receive the following
* array:<br>
* - args[0] The auto complete object instance
* - args[1] The <li> element item moused to
*/
YAHOO.widget.AutoComplete.prototype.itemMouseOverEvent = null;
/**
* Fired when result item has been moused out. Subscribers receive the
* following array:<br>
* - args[0] The auto complete object instance
* - args[1] The <li> element item moused from
*/
YAHOO.widget.AutoComplete.prototype.itemMouseOutEvent = null;
/**
* Fired when result item has been arrowed to. Subscribers receive the following
* array:<br>
* - args[0] The auto complete object instance
* - args[1] The <li> element item arrowed to
*/
YAHOO.widget.AutoComplete.prototype.itemArrowToEvent = null;
/**
* Fired when result item has been arrowed away from. Subscribers receive the
* following array:<br>
* - args[0] The auto complete object instance
* - args[1] The <li> element item arrowed from
*/
YAHOO.widget.AutoComplete.prototype.itemArrowFromEvent = null;
/**
* Fired when an item is selected via mouse click, ENTER key, or TAB key.
* Subscribers receive the following array:<br>
* - args[0] The auto complete object instance
* - args[1] The selected <li> element item
* - args[2] The data returned for the item, either as an object, or mapped from the schema into an array
*/
YAHOO.widget.AutoComplete.prototype.itemSelectEvent = null;
/**
* Fired when an user selection does not match any of the displayed result items.
* Note that this event may not behave as expected when delimiter characters
* have been defined. Subscribers receive the following array:<br>
* - args[0] The auto complete object instance
* - args[1] The user selection
*/
YAHOO.widget.AutoComplete.prototype.unmatchedItemSelectEvent = null;
/**
* Fired if forceSelection is enabled and the user's input has been cleared
* because it did not match one of the returned query results. Subscribers
* receive the following array:<br>
* - args[0] The auto complete object instance
*/
YAHOO.widget.AutoComplete.prototype.selectionEnforceEvent = null;
/**
* Fired when the auto complete container is collapsed. If alwaysShowContainer is
* enabled, then containerCollapseEvent will be fired when the container is
* cleared of results. Subscribers receive the following array:<br>
* - args[0] The auto complete object instance
*/
YAHOO.widget.AutoComplete.prototype.containerCollapseEvent = null;
/**
* Fired when the auto complete text input box loses focus. Subscribers receive
* an array of the following array:<br>
* - args[0] The auto complete object instance
*/
YAHOO.widget.AutoComplete.prototype.textboxBlurEvent = null;
/***************************************************************************
* Private member variables
***************************************************************************/
/**
* Internal class variable to index multiple auto complete instances.
*
* @type number
* @private
*/
YAHOO.widget.AutoComplete._nIndex = 0;
/**
* Name of auto complete instance.
*
* @type string
* @private
*/
YAHOO.widget.AutoComplete.prototype._sName = null;
/**
* Text input box DOM element.
*
* @type object
* @private
*/
YAHOO.widget.AutoComplete.prototype._oTextbox = null;
/**
* Whether or not the textbox is currently in focus. If query results come back
* but the user has already moved on, do not proceed with auto complete behavior.
*
* @type boolean
* @private
*/
YAHOO.widget.AutoComplete.prototype._bFocused = true;
/**
* Animation instance for container expand/collapse.
*
* @type boolean
* @private
*/
YAHOO.widget.AutoComplete.prototype._oAnim = null;
/**
* Container DOM element.
*
* @type object
* @private
*/
YAHOO.widget.AutoComplete.prototype._oContainer = null;
/**
* Whether or not the auto complete container is currently open.
*
* @type boolean
* @private
*/
YAHOO.widget.AutoComplete.prototype._bContainerOpen = false;
/**
* Whether or not the mouse is currently over the auto complete
* container. This is necessary in order to prevent clicks on container items
* from being text input box blur events.
*
* @type boolean
* @private
*/
YAHOO.widget.AutoComplete.prototype._bOverContainer = false;
/**
* Array of <li> elements references that contain query results within the
* auto complete container.
*
* @type array
* @private
*/
YAHOO.widget.AutoComplete.prototype._aListItems = null;
/**
* Number of <li> elements currently displayed in auto complete container.
*
* @type number
* @private
*/
YAHOO.widget.AutoComplete.prototype._nDisplayedItems = 0;
/**
* Internal count of <li> elements displayed and hidden in auto complete container.
*
* @type number
* @private
*/
YAHOO.widget.AutoComplete.prototype._maxResultsDisplayed = 0;
/**
* Current query string
*
* @type string
* @private
*/
YAHOO.widget.AutoComplete.prototype._sCurQuery = null;
/**
* Past queries this session (for saving delimited queries).
*
* @type string
* @private
*/
YAHOO.widget.AutoComplete.prototype._sSavedQuery = null;
/**
* Pointer to the currently highlighted <li> element in the container.
*
* @type object
* @private
*/
YAHOO.widget.AutoComplete.prototype._oCurItem = null;
/**
* Whether or not an item has been selected since the container was populated
* with results. Reset to false by _populateList, and set to true when item is
* selected.
*
* @type boolean
* @private
*/
YAHOO.widget.AutoComplete.prototype._bItemSelected = false;
/**
* Key code of the last key pressed in textbox.
*
* @type number
* @private
*/
YAHOO.widget.AutoComplete.prototype._nKeyCode = null;
/**
* Delay timeout ID.
*
* @type number
* @private
*/
YAHOO.widget.AutoComplete.prototype._nDelayID = -1;
/***************************************************************************
* Private methods
***************************************************************************/
/**
* Updates and validates latest public config properties.
*
* @private
*/
YAHOO.widget.AutoComplete.prototype._initProps = function() {
// Correct any invalid values
var minQueryLength = this.minQueryLength;
if(isNaN(minQueryLength) || (minQueryLength < 1)) {
minQueryLength = 1;
}
var maxResultsDisplayed = this.maxResultsDisplayed;
if(isNaN(this.maxResultsDisplayed) || (this.maxResultsDisplayed < 1)) {
this.maxResultsDisplayed = 10;
}
var queryDelay = this.queryDelay;
if(isNaN(this.queryDelay) || (this.queryDelay < 0)) {
this.queryDelay = 0.5;
}
var aDelimChar = (this.delimChar) ? this.delimChar : null;
if(aDelimChar) {
if(typeof aDelimChar == "string") {
this.delimChar = [aDelimChar];
}
else if(aDelimChar.constructor != Array) {
this.delimChar = null;
}
}
var animSpeed = this.animSpeed;
if((this.animHoriz || this.animVert) && YAHOO.util.Anim) {
if(isNaN(animSpeed) || (animSpeed < 0)) {
animSpeed = 0.3;
}
if(!this._oAnim ) {
oAnim = new YAHOO.util.Anim(this._oContainer._oContent, {}, this.animSpeed);
this._oAnim = oAnim;
}
else {
this._oAnim.duration = animSpeed;
}
}
if(this.forceSelection && this.delimChar) {
}
if(this.alwaysShowContainer && (this.useShadow || this.useIFrame)) {
}
if(this.alwaysShowContainer) {
this._bContainerOpen = true;
}
};
/**
* Initializes the auto complete container helpers if they are enabled and do
* not exist
*
* @private
*/
YAHOO.widget.AutoComplete.prototype._initContainerHelpers = function() {
if(this.useShadow && !this._oContainer._oShadow) {
var oShadow = document.createElement("div");
oShadow.className = "yui-ac-shadow";
this._oContainer._oShadow = this._oContainer.appendChild(oShadow);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -