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

📄 widget.js

📁 ZK 基础介绍 功能操作 模块 结合数据库操作
💻 JS
📖 第 1 页 / 共 2 页
字号:
/* widget.js{{IS_NOTE	Purpose:			Description:			History:		Sun Jan 29 15:25:10     2006, Created by tomyeh}}IS_NOTECopyright (C) 2006 Potix Corporation. All Rights Reserved.{{IS_RIGHT	This program is distributed under GPL Version 2.0 in the hope that	it will be useful, but WITHOUT ANY WARRANTY.}}IS_RIGHT*/zk.load("zul.vd");////// textbox //zkTxbox = {};zkau.textbox = zkTxbox; //zkau depends on itzkTxbox._intervals = {};zkTxbox.init = function (cmp) {	zk.listen(cmp, "focus", zkTxbox.onfocus);	zk.listen(cmp, "blur", zkTxbox.onblur);	zk.listen(cmp, "select", zkTxbox.onselect);	if ($tag(cmp) == "TEXTAREA")		zk.listen(cmp, "keyup", zkTxbox.onkey);	//Bug 1486556: we have to enforce zkTxbox to send value back for validating	//at the server	if (getZKAttr($outer(cmp), "srvald")) {		var old = cmp.value;		cmp.defaultValue = old + "-";		if (old != cmp.value) cmp.value = old; //Bug 1490079	}};zkTxbox.onHide = function (cmp) {	var inp = $real(cmp);	if (inp) zkVld.closeErrbox(inp.id, true);};zkTxbox.onselect = function (evt) {	var inp = zkau.evtel(evt); //backward compatible (2.4 or before)	var cmp = $outer(inp);	if (zkau.asap(cmp, "onSelection")) {		var sr = zk.getSelectionRange(inp);		zkau.send({uuid: cmp.id, cmd: "onSelection",				data: [sr[0], sr[1], inp.value.substring(sr[0], sr[1])]},    	 	100);    }};/** Handles onblur for text input. * Note: we don't use onChange because it won't work if user uses IE' auto-fill */zkTxbox.onblur = function (evt) {	var inp = zkau.evtel(evt); //backward compatible (2.4 or before)	//stop the scanning of onChaning first	var interval = zkTxbox._intervals[inp.id];	if (interval) {		clearInterval(interval);		delete zkTxbox._intervals[inp.id];	}	if (inp.removeAttribute) {		inp.removeAttribute("zk_changing_last");		inp.removeAttribute("zk_changing_selbk");	}	zkTxbox.updateChange(inp, zkTxbox._noonblur(inp));	zkau.onblur(evt); //fire onBlur after onChange};/** check any change. * @return false if failed (wrong data). */zkTxbox.updateChange = function (inp, noonblur) {	if (zkVld.validating) return true; //to avoid deadloop (when both fields are invalid)	if (inp && inp.id) {		var msg = !noonblur ? zkVld.validate(inp.id): null;			//It is too annoying (especial when checking non-empty)			//if we alert user for something he doesn't input yet		if (msg) {			zkVld.errbox(inp.id, msg);			inp.setAttribute("zk_err", "true");			zkau.send({uuid: $uuid(inp), cmd: "onError",				data: [inp.value, msg]}, -1);			return false; //failed		}		zkVld.closeErrbox(inp.id);	}	if (!noonblur) zkTxbox.onupdate(inp);	return true;};/** Tests whether NOT to do onblur (if inp currentFocus are in the same * component). */zkTxbox._noonblur = function (inp) {	var cf = zkau.currentFocus;	if (inp && cf && inp != cf) {		var el = inp;		for (;; el = el.parentNode) {			if (!el) return false;			if (getZKAttr(el, "combo") == "true")				break;			if (getZKAttr(el, "type"))				return false;		}		for (; cf; cf = $parent(cf))			if (cf == el)				return true;	}	return false;};/** Called if a component updates a text programmingly. Eg., datebox. * It checks whether the content is really changed and sends event if so. */zkTxbox.onupdate = function (inp) {	var newval = inp.value;	if (newval != inp.defaultValue) { //changed		inp.defaultValue = newval;		var uuid = $uuid(inp);		zkau.send({uuid: uuid, cmd: "onChange",			data: [newval]}, zkau.asapTimeout(uuid, "onChange", 100));	} else if (inp.getAttribute("zk_err")) {		inp.removeAttribute("zk_err");		zkau.send({uuid: $uuid(inp), cmd: "onError",			data: [newval, null]}, -1); //clear error (even if not changed)	}};zkTxbox.onkey = function (evt) {	//Request 1565288 and 1738246: support maxlength for Textarea	var inp = Event.element(evt);	var maxlen = getZKAttr(inp, "maxlen");	if (maxlen) {		maxlen = $int(maxlen);		if (maxlen > 0 && inp.value != inp.defaultValue		&& inp.value.length > maxlen)			inp.value = inp.value.substring(0, maxlen);	}};zkTxbox.onfocus = function (evt) {	zkau.onfocus(evt);	//handling onChanging	var inp = zkau.evtel(evt); //backward compatible (2.4 or before)	if (inp && inp.id && zkau.asap($outer(inp), "onChanging")) {		inp.setAttribute("zk_changing_last", inp.value);		if (!zkTxbox._intervals[inp.id])			zkTxbox._intervals[inp.id] =				setInterval("zkTxbox._scanChanging('"+inp.id+"')", 500);	}};/** Scans whether any changes. */zkTxbox._scanChanging = function (id) {	var inp = $e(id);	if (inp && zkau.asap($outer(inp), "onChanging")	&& inp.getAttribute("zk_changing_last") != inp.value) {		inp.setAttribute("zk_changing_last", inp.value);		var selbk = inp.getAttribute("zk_changing_selbk");		inp.removeAttribute("zk_changing_selbk");		zkau.send({uuid: $uuid(id),			cmd: "onChanging", data: [inp.value, selbk == inp.value],			ignorable: true}, 100);	}};zkTxbox.setAttr = function (cmp, nm, val) {	if("z.sel" == nm){		var inp = $real(cmp);		if ("all" == val) {			zk.asyncSelect(inp.id);			return true; //done		}		var ary = val.split(",");		var start = $int(ary[0]), end = $int(ary[1]),			len = inp.value.length;		if (start < 0) start = 0;		if (start > len) start = len;		if (end < 0) end = 0;		if (end > len) end = len;				if (inp.setSelectionRange) {			inp.setSelectionRange(start, end);			inp.focus();		} else if (inp.createTextRange) {			var range = inp.createTextRange();			if(start != end){				range.moveEnd('character', end - range.text.length);				range.moveStart('character', start);			}else{				range.move('character', start);			}			range.select();		}		return true;	}	return false;}//////intbox//zkInbox = {};zkInbox.init = zkTxbox.init;zkInbox.setAttr = zkTxbox.setAttr ;zkInbox.onHide = zkTxbox.onHide;zkInbox.validate = function (cmp) {	return zkVld.onlyInt(cmp.id);};//////decimalbox//zkDcbox = {};zkDcbox.init = zkTxbox.init;zkDcbox.setAttr = zkTxbox.setAttr ;zkDcbox.onHide = zkTxbox.onHide;zkDcbox.validate = function (cmp) {	return zkVld.onlyNum(cmp.id);};//////doublebox//zkDbbox = {};zkDbbox.init = zkTxbox.init;zkDbbox.setAttr = zkTxbox.setAttr ;zkDbbox.onHide = zkTxbox.onHide;zkDbbox.validate = function (cmp) {	return zkVld.onlyNum(cmp.id);};////// button //zkButton = {};zkButton.init = function (cmp) {	zk.listen(cmp, "click", zkau.onclick);	zk.listen(cmp, "dblclick", zkau.ondblclick);		//we have to handle here since _onDocDClick won't receive it	zk.listen(cmp, "focus", zkau.onfocus);	zk.listen(cmp, "blur", zkau.onblur);};zkTbtn = {}; //toolbarbuttonzkTbtn.init = function (cmp) {	zk.listen(cmp, "click", function (evt) {		if ("javascript:;" == cmp.href) zkau.onclick(evt);		else {			var t = cmp.getAttribute("target");			if (cmp.href && !zk.isNewWindow(cmp.href, t))				zk.progress();		}	});	zk.listen(cmp, "focus", zkau.onfocus);	zk.listen(cmp, "blur", zkau.onblur);};////// checkbox and radio //zkCkbox = {};zkCkbox.init = function (cmp) {	cmp = $real(cmp);	zk.listen(cmp, "click", function () {zkCkbox.onclick(cmp);});	zk.listen(cmp, "focus", zkau.onfocus);	zk.listen(cmp, "blur", zkau.onblur);};zkCkbox.setAttr = function (cmp, nm, val) {	if ("style" == nm) {		var lbl = zk.firstChild(cmp, "LABEL", true);		if (lbl) zkau.setAttr(lbl, nm, zk.getTextStyle(val));	}	zkau.setAttr(cmp, nm, val);	return true;};zkCkbox.rmAttr = function (cmp, nm) {	if ("style" == nm) {		var lbl = zk.firstChild(cmp, "LABEL", true);		if (lbl) zkau.rmAttr(lbl, nm);	}	zkau.rmAttr(cmp, nm);	return true;};zkRadio = {};zkRadio.init = zkCkbox.init;zkRadio.setAttr = zkCkbox.setAttr;zkRadio.rmAttr = zkCkbox.rmAttr;/** Handles onclick for checkbox and radio. */zkCkbox.onclick = function (cmp) {	var newval = cmp.checked;	//20060426: if radio, we cannot detect whether a radio is unchecked	//by the browser -- so always zk.send	if (cmp.type == "radio" || newval != cmp.defaultChecked) { //changed		cmp.defaultChecked = newval;		var uuid = $uuid(cmp);		zkau.send({uuid: uuid, cmd: "onCheck", data: [newval]},			zkau.asapTimeout(uuid, "onCheck"));	}};////// groupbox, caption //zkGrbox = {};zkCapt = {};zkGrbox.init = zkGrbox._fixHgh = function (cmp) {	var n = $e(cmp.id + "!cave");	if (n) {		var hgh = cmp.style.height;		if (hgh && hgh != "auto") {			hgh = cmp.clientHeight;			for (var p = n, q; q = p.previousSibling;) {				if (q.offsetHeight) hgh -= q.offsetHeight;				p = q;			}			for (var p = n, q; q = p.nextSibling;) {				if (q.offsetHeight) hgh -= q.offsetHeight;				p = q;			}			zk.setOffsetHeight(n, hgh);		}

⌨️ 快捷键说明

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