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

📄 form.js

📁 初学者
💻 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, {isContainer:true, templateString:"<form dojoAttachPoint='containerNode' dojoAttachEvent='onSubmit:onSubmit'></form>", formElements:[], 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 (obj, 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) {		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]);			}		}	} else {		this.formElements = this.containerNode.elements;	}}, onSubmit:function (e) {	e.preventDefault();}, submit:function () {	this.containerNode.submit();}, _getFormElement:function (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;			}		}	} else {		var elem = this.formElements[name];		if (typeof (elem) != "undefined") {			return elem;		}	}	return null;}, _getObject:function (obj, 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 (obj, 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":			continue;			break;		  case "ComboBox":			continue;			break;		  default:			break;		}	}}, setValues:function (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 {				}			}			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++) {		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]] = [];				}				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 (nameA.length == 1) {				myObj = myObj[nameA[0]];			} else {				myObj = myObj[nameA[0]][nameIndex];			}		}		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 {			}		} 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);						}					}				}			}		}		name = undefined;	}	return obj;}});

⌨️ 快捷键说明

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