⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 combobox.js

📁 初学者
💻 JS
📖 第 1 页 / 共 2 页
字号:
		clearTimeout(this.searchTimer);	}	if (doSearch) {		this._blurOptionNode();		this.searchTimer = setTimeout(dojo.lang.hitch(this, this._startSearchFromInput), this.searchDelay);	}}, compositionEnd:function (evt) {	evt.key = evt.keyCode;	this._handleKeyEvents(evt);}, onKeyUp:function (evt) {	this.setValue(this.textInputNode.value);}, setSelectedValue:function (value) {	this.comboBoxSelectionValue.value = value;}, setAllValues:function (value1, value2) {	this.setSelectedValue(value2);	this.setValue(value1);}, _focusOptionNode:function (node) {	if (this._highlighted_option != node) {		this._blurOptionNode();		this._highlighted_option = node;		dojo.html.addClass(this._highlighted_option, "dojoComboBoxItemHighlight");	}}, _blurOptionNode:function () {	if (this._highlighted_option) {		dojo.html.removeClass(this._highlighted_option, "dojoComboBoxItemHighlight");		this._highlighted_option = null;	}}, _highlightNextOption:function () {	if ((!this._highlighted_option) || !this._highlighted_option.parentNode) {		this._focusOptionNode(this.optionsListNode.firstChild);	} else {		if (this._highlighted_option.nextSibling) {			this._focusOptionNode(this._highlighted_option.nextSibling);		}	}	dojo.html.scrollIntoView(this._highlighted_option);}, _highlightPrevOption:function () {	if (this._highlighted_option && this._highlighted_option.previousSibling) {		this._focusOptionNode(this._highlighted_option.previousSibling);	} else {		this._highlighted_option = null;		this._hideResultList();		return;	}	dojo.html.scrollIntoView(this._highlighted_option);}, _itemMouseOver:function (evt) {	if (evt.target === this.optionsListNode) {		return;	}	this._focusOptionNode(evt.target);	dojo.html.addClass(this._highlighted_option, "dojoComboBoxItemHighlight");}, _itemMouseOut:function (evt) {	if (evt.target === this.optionsListNode) {		return;	}	this._blurOptionNode();}, onResize:function () {	var inputSize = dojo.html.getContentBox(this.textInputNode);	if (inputSize.height <= 0) {		dojo.lang.setTimeout(this, "onResize", 100);		return;	}	var buttonSize = {width:inputSize.height, height:inputSize.height};	dojo.html.setContentBox(this.downArrowNode, buttonSize);}, fillInTemplate:function (args, frag) {	dojo.html.applyBrowserClass(this.domNode);	var source = this.getFragNodeRef(frag);	if (!this.name && source.name) {		this.name = source.name;	}	this.comboBoxValue.name = this.name;	this.comboBoxSelectionValue.name = this.name + "_selected";	dojo.html.copyStyle(this.domNode, source);	dojo.html.copyStyle(this.textInputNode, source);	dojo.html.copyStyle(this.downArrowNode, source);	with (this.downArrowNode.style) {		width = "0px";		height = "0px";	}	var dpClass;	if (this.dataProviderClass) {		if (typeof this.dataProviderClass == "string") {			dpClass = dojo.evalObjPath(this.dataProviderClass);		} else {			dpClass = this.dataProviderClass;		}	} else {		if (this.mode == "remote") {			dpClass = dojo.widget.incrementalComboBoxDataProvider;		} else {			dpClass = dojo.widget.basicComboBoxDataProvider;		}	}	this.dataProvider = new dpClass(this, this.getFragNodeRef(frag));	this.popupWidget = new dojo.widget.createWidget("PopupContainer", {toggle:this.dropdownToggle, toggleDuration:this.toggleDuration});	dojo.event.connect(this, "destroy", this.popupWidget, "destroy");	this.optionsListNode = this.popupWidget.domNode;	this.domNode.appendChild(this.optionsListNode);	dojo.html.addClass(this.optionsListNode, "dojoComboBoxOptions");	dojo.event.connect(this.optionsListNode, "onclick", this, "_selectOption");	dojo.event.connect(this.optionsListNode, "onmouseover", this, "_onMouseOver");	dojo.event.connect(this.optionsListNode, "onmouseout", this, "_onMouseOut");	dojo.event.connect(this.optionsListNode, "onmouseover", this, "_itemMouseOver");	dojo.event.connect(this.optionsListNode, "onmouseout", this, "_itemMouseOut");}, _openResultList:function (results) {	if (this.disabled) {		return;	}	this._clearResultList();	if (!results.length) {		this._hideResultList();	}	if ((this.autoComplete) && (results.length) && (!this._prev_key_backspace) && (this.textInputNode.value.length > 0)) {		var cpos = this._getCaretPos(this.textInputNode);		if ((cpos + 1) > this.textInputNode.value.length) {			this.textInputNode.value += results[0][0].substr(cpos);			this._setSelectedRange(this.textInputNode, cpos, this.textInputNode.value.length);		}	}	var even = true;	while (results.length) {		var tr = results.shift();		if (tr) {			var td = document.createElement("div");			td.appendChild(document.createTextNode(tr[0]));			td.setAttribute("resultName", tr[0]);			td.setAttribute("resultValue", tr[1]);			td.className = "dojoComboBoxItem " + ((even) ? "dojoComboBoxItemEven" : "dojoComboBoxItemOdd");			even = (!even);			this.optionsListNode.appendChild(td);		}	}	this._showResultList();}, _onFocusInput:function () {	this._hasFocus = true;}, _onBlurInput:function () {	this._hasFocus = false;	this._handleBlurTimer(true, 500);}, _handleBlurTimer:function (clear, millisec) {	if (this.blurTimer && (clear || millisec)) {		clearTimeout(this.blurTimer);	}	if (millisec) {		this.blurTimer = dojo.lang.setTimeout(this, "_checkBlurred", millisec);	}}, _onMouseOver:function (evt) {	if (!this._mouseover_list) {		this._handleBlurTimer(true, 0);		this._mouseover_list = true;	}}, _onMouseOut:function (evt) {	var relTarget = evt.relatedTarget;	try {		if (!relTarget || relTarget.parentNode != this.optionsListNode) {			this._mouseover_list = false;			this._handleBlurTimer(true, 100);			this._tryFocus();		}	}	catch (e) {	}}, _isInputEqualToResult:function (result) {	var input = this.textInputNode.value;	if (!this.dataProvider.caseSensitive) {		input = input.toLowerCase();		result = result.toLowerCase();	}	return (input == result);}, _isValidOption:function () {	var tgt = dojo.html.firstElement(this.optionsListNode);	var isValidOption = false;	while (!isValidOption && tgt) {		if (this._isInputEqualToResult(tgt.getAttribute("resultName"))) {			isValidOption = true;		} else {			tgt = dojo.html.nextElement(tgt);		}	}	return isValidOption;}, _checkBlurred:function () {	if (!this._hasFocus && !this._mouseover_list) {		this._hideResultList();		if (!this.textInputNode.value.length) {			this.setAllValues("", "");			return;		}		var isValidOption = this._isValidOption();		if (this.forceValidOption && !isValidOption) {			this.setAllValues("", "");			return;		}		if (!isValidOption) {			this.setSelectedValue("");		}	}}, _selectOption:function (evt) {	var tgt = null;	if (!evt) {		evt = {target:this._highlighted_option};	}	if (!dojo.html.isDescendantOf(evt.target, this.optionsListNode)) {		if (!this.textInputNode.value.length) {			return;		}		tgt = dojo.html.firstElement(this.optionsListNode);		if (!tgt || !this._isInputEqualToResult(tgt.getAttribute("resultName"))) {			return;		}	} else {		tgt = evt.target;	}	while ((tgt.nodeType != 1) || (!tgt.getAttribute("resultName"))) {		tgt = tgt.parentNode;		if (tgt === dojo.body()) {			return false;		}	}	this.selectedResult = [tgt.getAttribute("resultName"), tgt.getAttribute("resultValue")];	this.setAllValues(tgt.getAttribute("resultName"), tgt.getAttribute("resultValue"));	if (!evt.noHide) {		this._hideResultList();		this._setSelectedRange(this.textInputNode, 0, null);	}	this._tryFocus();}, _clearResultList:function () {	if (this.optionsListNode.innerHTML) {		this.optionsListNode.innerHTML = "";	}}, _hideResultList:function () {	this.popupWidget.close();}, _showResultList:function () {	var childs = this.optionsListNode.childNodes;	if (childs.length) {		var visibleCount = Math.min(childs.length, this.maxListLength);		with (this.optionsListNode.style) {			display = "";			if (visibleCount == childs.length) {				height = "";			} else {				height = visibleCount * dojo.html.getMarginBox(childs[0]).height + "px";			}			width = (dojo.html.getMarginBox(this.domNode).width - 2) + "px";		}		this.popupWidget.open(this.domNode, this, this.downArrowNode);	} else {		this._hideResultList();	}}, handleArrowClick:function () {	this._handleBlurTimer(true, 0);	this._tryFocus();	if (this.popupWidget.isShowingNow) {		this._hideResultList();	} else {		this._startSearch("");	}}, _tryFocus:function () {	try {		this.textInputNode.focus();	}	catch (e) {	}}, _startSearchFromInput:function () {	this._startSearch(this.textInputNode.value);}, _startSearch:function (key) {	this.dataProvider.startSearch(key, dojo.lang.hitch(this, "_openResultList"));}, postCreate:function () {	this.onResize();	dojo.event.connect(this.textInputNode, "onblur", this, "_onBlurInput");	dojo.event.connect(this.textInputNode, "onfocus", this, "_onFocusInput");	if (this.disabled) {		this.disable();	}	var s = dojo.widget.html.stabile.getState(this.widgetId);	if (s) {		this.setState(s);	}}});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -