From 9c9a2d731fea9679f65904a3a6b72dd78b4253a4 Mon Sep 17 00:00:00 2001 From: wei <> Date: Mon, 9 Jan 2006 03:40:59 +0000 Subject: Update library --- framework/Web/Javascripts/extended/dom.js | 222 +++++++++++++++++++++++++++ framework/Web/Javascripts/extended/event.js | 2 +- framework/Web/Javascripts/extended/string.js | 25 +++ 3 files changed, 248 insertions(+), 1 deletion(-) (limited to 'framework/Web/Javascripts/extended') diff --git a/framework/Web/Javascripts/extended/dom.js b/framework/Web/Javascripts/extended/dom.js index 4c664de7..de5ae056 100644 --- a/framework/Web/Javascripts/extended/dom.js +++ b/framework/Web/Javascripts/extended/dom.js @@ -3,4 +3,226 @@ Object.extend(Element, { { (cond?Element.addClassName:Element.removeClassName)(element,className); } +}); + +Prado.Element = +{ + /** + * Set the value of a particular element. + * @param string element id + * @param string new element value. + */ + setValue : function(element, value) + { + var el = $(element); + if(el && typeof(el.value) != "undefined") + el.value = value; + }, + + select : function(element, method, value) + { + var el = $(element); + var isList = element.indexOf('[]') > -1; + if(!el && !isList) return; + method = isList ? 'check'+method : el.tagName.toLowerCase()+method; + var selection = Prado.Element.Selection; + if(isFunction(selection[method])) + selection[method](isList ? element : el,value); + }, + + click : function(element) + { + var el = $(element); + //Logger.info(el); + if(!el) return; + if(document.createEvent) + { + var evt = document.createEvent('HTMLEvents'); + evt.initEvent('click', true, true); + el.dispatchEvent(evt); + //Logger.warn("dispatching click for "+el.id); + } + else if(el.fireEvent) + { + el.fireEvent('onclick'); + if(isFunction(el.onclick)) + el.onclick(); + } + }, + + setAttribute : function(element, attribute, value) + { + var el = $(element); + if(attribute == "disabled" && value==false) + el.removeAttribute(attribute); + else + el.setAttribute(attribute, value); + }, + + setOptions : function(element, options) + { + var el = $(element); + if(el && el.tagName.toLowerCase() == "select") + { + while(el.length > 0) + el.remove(0); + for(var i = 0; i 0) || element.attachEvent)) name = 'keydown'; + this._observeAndCache(element, name, observer, useCapture); } }); \ No newline at end of file diff --git a/framework/Web/Javascripts/extended/string.js b/framework/Web/Javascripts/extended/string.js index f79072fb..fe586cfb 100644 --- a/framework/Web/Javascripts/extended/string.js +++ b/framework/Web/Javascripts/extended/string.js @@ -32,6 +32,31 @@ Object.extend(String.prototype, { trimRight : function() { return this.replace(/\s+$/,''); + }, + + /** + * Convert period separated function names into a function reference. + * e.g. "Prado.AJAX.Callback.Action.setValue".toFunction() will return + * the actual function Prado.AJAX.Callback.Action.setValue() + * @return Function the corresponding function represented by the string. + */ + toFunction : function() + { + var commands = this.split(/\./); + var command = window; + commands.each(function(action) + { + if(command[new String(action)]) + command=command[new String(action)]; + }); + if(isFunction(command)) + return command; + else + { + if(typeof Logger != "undefined") + Logger.error("Missing function", this); + return Prototype.emptyFunction; + } } }); -- cgit v1.2.3