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

📄 form.js

📁 对java中如何使用Ajax技术
💻 JS
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.widget.Form");dojo.require("dojo.widget.*");dojo.require("dojo.widget.HtmlWidget");dojo.widget.defineWidget("dojo.widget.Form", dojo.widget.HtmlWidget,	{		/*		summary: 			Widget for easily moving data to/from form					description:				gets and sets data to and from js-object. With				this it's easy to create forms to application.				Just create empty form, then set it's values				with this and after user pushes submit,				getValues and send them as json-notation to				server.				Note: not all Form widgets are supported ATM								usage: 				<form dojoType="Form" id="myForm">					Name: <input type="text" name="name" />				</form>				myObj={name: "John Doe"};				dojo.widget.byId('myForm').setValues(myObj);				myObj=dojo.widget.byId('myForm').getValues();		*/		isContainer: true,   		templateString: "<form dojoAttachPoint='containerNode' dojoAttachEvent='onSubmit:onSubmit'></form>",		formElements: [],		// ignoreNullValue:		//	if true, then only fields that has data is set to form		// 	if false, fields that does not have corresponding object, is set to empty		ignoreNullValues: false,		postCreate: function(args,frag){			for (var key in args) {				if (key == "dojotype") continue;				var attr= document.createAttribute(key);      				attr.nodeValue=args[key];      				this.containerNode.setAttributeNode(attr);    			}  		},		_createRepeaters: function (/*object*/obj, /*widget*/widget) {			for(var i=0; i<widget.children.length; ++i) {				  if (widget.children[i].widgetType == "RepeaterContainer") {					var rIndex=widget.children[i].index;					var rIndexPos=rIndex.indexOf("%{index}");					rIndex=rIndex.substr(0,rIndexPos-1);					var myObj = this._getObject(obj, rIndex);					if (typeof(myObj) == "object" && myObj.length == 0) {						myObj=new Array();					}					var rowCount = widget.children[i].getRowCount();					for (var j=0,len=rowCount; j<len; ++j) {						widget.children[i].deleteRow(0);					}					for (var j=0; j<myObj.length; j++) {    					 	widget.children[i].addRow(false);					}				}				if (widget.children[i].isContainer) {					this._createRepeaters(obj, widget.children[i]);				}			}		}, 		_createFormElements: function() {   			if(dojo.render.html.safari) {				// bug in safari (not registering form-elements)				this.formElements=[];				var elems = ["INPUT", "SELECT", "TEXTAREA"];				for (var k=0; k < elems.length; k++) {					var list = this.containerNode.getElementsByTagName(elems[k]);					for (var j=0,len2=list.length; j<len2; j++) {						this.formElements.push(list[j]);					}				}				// fixed in safari nightly			} else {				this.formElements=this.containerNode.elements;			}		},		onSubmit: function(/*event*/e) {    			e.preventDefault();  		},		submit: function() {			this.containerNode.submit();		},		_getFormElement: function(/*form elements name*/name) {			if(dojo.render.html.ie) {				for(var i=0, len=this.formElements.length; i<len; i++) {					var element = this.formElements[i];					if (element.name == name) {						return element;					} // if				} // for			} else {				var elem = this.formElements[name];				if (typeof(elem) != "undefined") {					return elem;				}			}			return null;		},		_getObject: function(/*object*/obj, /*string*/searchString) {			var namePath = [];			namePath=searchString.split(".");			var myObj=obj;			var name=namePath[namePath.length-1];			for(var j=0, len=namePath.length;j<len;++j) {				var p=namePath[j];				if (typeof(myObj[p]) == "undefined") {					myObj[p]={};				}				myObj=myObj[p];			}			return myObj;		},		_setToContainers: function (/*object*/obj,/*widget*/widget) {			for(var i=0, len=widget.children.length; i<len; ++i) {				var currentWidget=widget.children[i];				if (currentWidget.widgetType == "Repeater") {        				for(var j=0,len=currentWidget.getRowCount(); j<len; ++j) {          					currentWidget._initRow(j);        				}				}				if (currentWidget.isContainer) {					this._setToContainers (obj, currentWidget);					continue;				}				switch(currentWidget.widgetType) {					case "Checkbox":						currentWidget.setValue(currentWidget.inputNode.checked);						break;					case "DropdownDatePicker":						currentWidget.setValue(currentWidget.getValue());						break;					case "Select":						//widget.children[i].setValue(myObj[name]);						continue;						break;					case "ComboBox":						//widget.children[i].setSelectedValue(myObj[name]);						continue;						break;					default:						break;				}			}		},		setValues: function(/*object*/obj) {			this._createFormElements();    			this._createRepeaters(obj,this);			for(var i=0, len=this.formElements.length; i<len; i++) {				var element = this.formElements[i];				if (element.name == '') {continue};				var namePath = new Array();				namePath=element.name.split(".");				var myObj=obj;				var name=namePath[namePath.length-1];				for(var j=1,len2=namePath.length;j<len2;++j) {					var p=namePath[j - 1];					if(typeof(myObj[p]) == "undefined") {						myObj=undefined;						break;					};					myObj=myObj[p];				}				if (typeof(myObj) == "undefined") {					continue;				}				if (typeof(myObj[name]) == "undefined" && this.ignoreNullValues) {					continue;				}				var type=element.type;				if (type == "hidden" || type == "text" || type == "textarea" || type == "password") {					type = "text";				}				switch(type) {					case "checkbox":						element.checked=false;						if (typeof(myObj[name]) == 'undefined') continue;						for (var j=0,len2=myObj[name].length; j<len2; ++j) {							if(element.value == myObj[name][j]) {								element.checked=true;							}						}						break;					case "radio":						element.checked=false;						if (typeof(myObj[name]) == 'undefined') {continue};						if (myObj[name] == element.value) {							element.checked=true;						}						break;					case "select-multiple":						element.selectedIndex=-1;						for (var j=0,len2=element.options.length; j<len2; ++j) {							for (var k=0,len3=myObj[name].length;k<len3;++k) {								if (element.options[j].value == myObj[name][k]) {									element.options[j].selected=true;								}							}						}						break;					case "select-one":						element.selectedIndex="0";						for (var j=0,len2=element.options.length; j<len2; ++j) {							if (element.options[j].value == myObj[name]) {								element.options[j].selected=true;							} else {							//	element.options[j].selected=false;							}						}						break;					case "text":						var value="";						if (typeof(myObj[name]) != 'undefined') {							value = myObj[name];						}						element.value=value;						break;					default:						dojo.debug("Not supported type ("+type+")");						break;				}      			}			this._setToContainers(obj,this);		},		getValues: function() {			this._createFormElements();			var obj = { };			for(var i=0,len=this.formElements.length; i<len; i++) {				// FIXME: would be better to give it an attachPoint:				var elm = this.formElements[i];				var namePath = [];				if (elm.name == '') { continue;}				namePath=elm.name.split(".");				var myObj=obj;				var name=namePath[namePath.length-1];				for(var j=1,len2=namePath.length;j<len2;++j) {					var nameIndex = null;					var p=namePath[j - 1];					var nameA=p.split("[");					if (nameA.length > 1) {						if(typeof(myObj[nameA[0]]) == "undefined") {							myObj[nameA[0]]=[ ];						} // if						nameIndex=parseInt(nameA[1]);						if(typeof(myObj[nameA[0]][nameIndex]) == "undefined") {							myObj[nameA[0]][nameIndex]={};						}					} else if(typeof(myObj[nameA[0]]) == "undefined") {						myObj[nameA[0]]={}					} // if					if (nameA.length == 1) {						myObj=myObj[nameA[0]];					} else {						myObj=myObj[nameA[0]][nameIndex];					} // if				} // for				if ((elm.type != "select-multiple" && elm.type != "checkbox" && elm.type != "radio") || (elm.type=="radio" && elm.checked)) {					if(name == name.split("[")[0]) {						myObj[name]=elm.value;					} else {						// can not set value when there is no name					}				} else if (elm.type == "checkbox" && elm.checked) {					if(typeof(myObj[name]) == 'undefined') {						myObj[name]=[ ];					}					myObj[name].push(elm.value);				} else if (elm.type == "select-multiple") {					if(typeof(myObj[name]) == 'undefined') {						myObj[name]=[ ];					}					for (var jdx=0,len3=elm.options.length; jdx<len3; ++jdx) {						if (elm.options[jdx].selected) {							myObj[name].push(elm.options[jdx].value);						}					}				} // if				name=undefined;			} // for		return obj;	}});

⌨️ 快捷键说明

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