亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? builder.js

?? zapatec suite 最新版 20070204,非常棒的ajax widgets 工具包
?? JS
字號:
/* $Id: builder.js 7028 2007-04-26 10:40:38Z andrew $ *//** * @fileoverview Zapatec form builder * * * <pre> * Copyright (c) 2004-2007 by Zapatec, Inc. * http://www.zapatec.com * 1700 MLK Way, Berkeley, California, * 94709, U.S.A. * All rights reserved. * </pre> *//** * Zapatec form builder * * @constructor * @extends Zapatec.Widget * @param {object} objArgs User configuration */Zapatec.FormBuilder = function(objArgs) {  // Call constructor of superclass  Zapatec.FormBuilder.SUPERconstructor.call(this, objArgs);};/** * Unique static id of the widget class.  * @private */Zapatec.FormBuilder.id = 'Zapatec.FormBuilder';// Inherit WidgetZapatec.inherit(Zapatec.FormBuilder, Zapatec.Widget);/** * Initializes object. * * @param {object} objArgs User configuration */Zapatec.FormBuilder.prototype.init = function(objArgs) {	if(!Zapatec.Window){		Zapatec.Log({description: "Zapatec.Window module is not found. Form builder functionality will be limited."})	}	// Call init method of superclass	Zapatec.FormBuilder.SUPERclass.init.call(this, objArgs);		this.tabs = null;	this.formObj = null;	this.formPath = "/path/to/zapatec/";	this.formConfig = {form: "zpForm"};	this.activeField = null;	this.fields = {};	this.fieldsOrder = [];		this.designPreviewContainer = document.getElementById("designPreview");	//	Zapatec.Utils.warnUnload('All your changes and form structure will be lost.');};/** * Start form builder. * @private */Zapatec.FormBuilder.prototype.start = function(){	var self = this;	this.initComposer();	this.tabs = new Zapatec.Tabs({		tabs: 'tabs',		tabBar: 'tab-bar',		changeUrl: false,		onBeforeTabChange: function(dataObj) {			var currentTab = dataObj.oldTabId;			var newTab = dataObj.newTabId;						switch(currentTab){				case "pane-prefs":					self.updateConfig();					break;			}						switch(newTab){				case "pane-contents":					self.doPreview();					break;				case "pane-code":					self.makeCode();					break;			}				// allow tab to change			return true;		}	});    if(!Zapatec.Tooltip){		Zapatec.Log({description: "Zapatec.Tooltip is not found!"});	} else {		Zapatec.Tooltip.setupFromDFN();	}	this.doPreview();		// FIXME Remove after	this.addField("input-text");	this.addField("input-text");	var sel = this.addField("select");	sel.fieldConfig.options = [		{			title: "first",			value: "1"		},		{			title: "second",			value: "2"		},		{			title: "third",			value: "3"		},		{			title: "fourth",			value: "4"		}	];		this.doPreview();};/** * Reconfigures the widget with new config options after it was initialized. * May be used to change look or behavior of the widget after it has loaded * the data. In the argument pass only values for changed config options. * There is no need to pass config options that were not changed. * * @param {object} objArgs Changes to user configuration */Zapatec.FormBuilder.prototype.reconfigure = function(objArgs) {	// Call parent method	Zapatec.FormBuilder.SUPERclass.reconfigure.call(this, objArgs);};/** * Configures the widget. Gets called from init and reconfigure methods of * superclass. * * @private * @param {object} objArgs User configuration */Zapatec.FormBuilder.prototype.configure = function(objArgs) {	// Call parent method	Zapatec.FormBuilder.SUPERclass.configure.call(this, objArgs);};/** * Inits the Zapatec.Composer with needed element and document. */Zapatec.FormBuilder.prototype.initComposer = function() {	var elements = Zapatec.Utils.getElementsByAttribute("className", "clickable", "pane-contents", true, true);	var self = this;	this.composer = new Zapatec.Composer({		components : elements, 		putCallback : function(el, nextEl) {			var elType = el.id;			if (elType == "input-textarea" || elType == "input-select") {				elType = elType.replace("input-", "");			}			return self.addField(elType, nextEl);		}, 		itemClassName : "elementHolder",		highlightClass : "elementHighlight",		selectedClass : "highlighted",		hookClassName: "dragHandle"	});}; /** *  * Change config option for form. Depending on field name different config  * option will be set and dependant options will be shown/hided. * @private * @param {Object} optionName Option name * @param {Object} optionValue Option value */Zapatec.FormBuilder.prototype.configOptionChanged = function(optionName, optionValue){	// do different actions depending on field name.	switch(optionName){		case "form_path":			if(!optionValue || optionValue == ""){				optionValue = "/path/to/zapatec/";			}						// adding slash to the end if missing			if(optionValue.charAt(optionValue.length - 1) != "/"){				optionValue += "/";			}						this.formPath = optionValue;						break;                      0		case "language":			// parsing "rus_ru-ko8r" string 			var md = optionValue.match(/^([a-zA-Z\d]+)(?:_([a-zA-Z\d]+))?(?:-([a-zA-Z\d]+))?$/);			if(md){				this.formConfig["lang"] = md[1];				this.formConfig["langCountryCode"] = md[2];				this.formConfig["langEncoding"] = md[3];			}			break;		case "startupFocusPosition":		case "statusImgPos":		case "showErrors":			if(optionValue == ""){				optionValue = null;			}		case "theme":		case "strict":		case "showErrorsOnSubmit":		case "putTabIndexesOnError":		case "displayErrorWhileTyping":			this.formConfig[optionName] = optionValue;			break;		default:			Zapatec.Log({description: "Unknown config option: " + optionName});	}};/** * Refresh config hash. * @private */Zapatec.FormBuilder.prototype.updateConfig = function(){	// Iterate through all INPUT and SELECT elements and call their onchange handlers.	// TODO do this in a nice way.	var parent = document.getElementById("pane-prefs");	var inputs = parent.getElementsByTagName("input"); 	var selects = parent.getElementsByTagName("select"); 	for(var ii = 0; ii < inputs.length; ii++){		if(inputs[ii].onblur){			inputs[ii].onblur();		}				if(inputs[ii].onchange){			inputs[ii].onchange();		}	}	for(var ii = 0; ii < selects.length; ii++){		if(selects[ii].onchange){			selects[ii].onchange();		}	}};/** * Add new field into form. * @param {String} fieldType Field type - "input-text", "input-radio",  * "input-checkbox", "select" or "textarea" * @param {Object} insertBeforeEl Optional. DOM element before which new field will be inserted.  */Zapatec.FormBuilder.prototype.addField = function(fieldType, insertBeforeEl){	var field = new Zapatec.FormBuilder.Field({		builder: this,		fieldType: fieldType,		insertBeforeEl: insertBeforeEl	});		this.doPreview();		return field;}Zapatec.FormBuilder.prototype.moveFieldTo = function(fieldId, insertBeforeId){	this.fieldsOrder = Zapatec.Array.without(this.fieldsOrder, fieldId);	if(insertBeforeId){		this.fieldsOrder.splice(Zapatec.Array.indexOf(this.fieldsOrder, insertBeforeId), 0, fieldId);	} else {		this.fieldsOrder.push(fieldId);	}}/** * Returns content for FORM element * @private * @param {boolean} addControls If true - some control elements will be added.  * To get code for resulting form - set this option to false. * @return Text content for FORM element. * @type String */Zapatec.FormBuilder.prototype.constructFormHTML = function(addControls){	var formContent = [];	for(var ii = 0; ii < this.fieldsOrder.length; ii++){		formContent.push(this.fields[this.fieldsOrder[ii]].getFieldFromConfig(addControls));	}	formContent.push('\t<div class="zpFormButtons">\n');	formContent.push('\t\t<input value="Submit" name="submit" onclick="" type="submit" class="button">\n');	formContent.push('\t\t<input value="Reset" name="reset" onclick="" type="reset" class="button">\n');	formContent.push('\t</div>');		return formContent.join("");};/** * Refresh form preview. * @private */Zapatec.FormBuilder.prototype.doPreview = function(){	if(this.readyForm){		this.readyForm.destroy();	}		this.updateConfig();		this.designPreviewContainer.innerHTML = "<form action='' method='GET' id='zpForm' onsubmit='return false;'></form>";		var form = document.getElementById("zpForm");	form.innerHTML = this.constructFormHTML(true);		for(var fieldId in this.fields){		this.fields[fieldId].updateLinks();	}	this.readyForm = new Zapatec.Form(this.formConfig);		if(this.activeField){		this.activeField.showControls();	}	this.composer.setDocument(this.readyForm.container);};/** * Set result code into "Get your code" textarea. * @private */Zapatec.FormBuilder.prototype.makeCode = function(){	document.getElementById("userCode").value = this.generateCode(true);}/** * Generate HTML page with form content, code and headers. * @param {Object} insertPathes If true - user path will be added to all form pathes. * @return HTML page with form content, code and headers. * @type String */Zapatec.FormBuilder.prototype.generateCode = function(insertPathes){	var self = this;		if(!this.readyForm){		this.doPreview();	}		var formConfig = "";	var formConfigObj = Zapatec.Utils.clone(this.formConfig);		if(insertPathes){		formConfigObj.themePath = this.formPath + "zpform/themes/";	}	for(var opt in this.formConfig){		if(!this.formConfig[opt]){			continue;		}				formConfig += "\t" + opt + ": '" + this.formConfig[opt] + "',\n"; 	}		formConfig = formConfig.substring(0, formConfig.length - 2);	var formContent = "<form action='your_script.html' method='GET' id='zpForm'>\n";	formContent += this.constructFormHTML();	formContent = formContent.substring(0, formContent.length - 1);	formContent += "\n</form>";		var langHeader = "";	if(this.formConfig['lang'] != 'eng'){		var langStr = this.formConfig['lang'];		if(this.formConfig['langCountryCode'] && this.formConfig['langCountryCode'].length > 0){			langStr += "_" + this.formConfig['langCountryCode']; 		}		if(this.formConfig['langEncoding'] && this.formConfig['langEncoding'].length > 0){			langStr += "-" + this.formConfig['langEncoding']; 		}						langHeader = "\n\t<!-- Language file -->\n";		langHeader += '\t<script src="'+ (insertPathes ? this.formPath : "") + 'zpform/lang/'+ langStr +'.js" type="text/javascript"></script>';	}	return Zapatec.FormBuilder.Utils.substitute(Zapatec.FormBuilder.TEMPLATE, {		formPath: this.formPath,		formText: formContent,		formConfig: formConfig,		formLang: langHeader	});};Zapatec.FormBuilder.prototype.previewFormNewWindow = function(){	Zapatec.Utils.newCenteredWindow("../wizard/popup.html", "FORMBUILDER", 500, 500, true);};Zapatec.FormBuilder.Utils = {};/** * @private * Substiture parameters in template with real values * @param {Object} txt Template * @param {Object} args Hash with values * @return Template with substitutions * @type Object */Zapatec.FormBuilder.Utils.substitute = function(txt, args){	if(!txt){		return null;	}	for(var opt in args){		var escapedOpt = opt.replace(/\[/g, "\\[").replace(/\]/g, "\\]").replace(/\./g, "\\.");		txt = txt.replace(new RegExp("\\$"+escapedOpt+"\\$", 'g'), args[opt]);	}		return txt;};Zapatec.FormBuilder.TEMPLATE = ['<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">','<html>','<head>','	<title>AJAX forms by Zapatec</title>','	<!-- Adjust the paths to the form location on your server if necessary-->','','	<!-- Javascript utilities file-->','	<script src="$formPath$utils/zapatec.js" type="text/javascript"></script>','','	<!-- basic Javascript file for the form-->','	<script src="$formPath$zpform/src/form.js" type="text/javascript"></script>','$formLang$','</head>','<body>','<!-- The HTML for the form -->','$formText$','','<!-- The Javascript code to initiate the form -->','<script type="text/javascript">','new Zapatec.Form({','$formConfig$','},','</script>','<a href="http://www.zapatec.com/">AJAX forms</a> by Zapatec','</body>','</html>'];Zapatec.FormBuilder.TEMPLATE = Zapatec.FormBuilder.TEMPLATE.join('');

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美二区三区91| 亚洲国产sm捆绑调教视频 | 亚洲人精品一区| 另类小说图片综合网| 99免费精品在线| 欧美一区二区三区精品| 亚洲婷婷在线视频| 国产大陆亚洲精品国产| 欧美疯狂做受xxxx富婆| 亚洲乱码国产乱码精品精小说 | 国产精品1区二区.| 777亚洲妇女| 亚洲精品高清在线观看| 粉嫩欧美一区二区三区高清影视 | 奇米色777欧美一区二区| 91麻豆精品一区二区三区| 久久久久久久综合日本| 日韩电影在线一区二区三区| 色8久久人人97超碰香蕉987| 国产欧美精品一区| 国产盗摄精品一区二区三区在线| 日韩亚洲欧美一区二区三区| 亚洲香蕉伊在人在线观| 91免费在线视频观看| 亚洲欧美一区二区三区久本道91 | 在线观看亚洲精品视频| ...av二区三区久久精品| 不卡一卡二卡三乱码免费网站| 精品精品欲导航| 免费高清在线一区| 欧美变态tickle挠乳网站| 乱中年女人伦av一区二区| 555www色欧美视频| 奇米影视一区二区三区小说| 日韩午夜精品电影| 毛片av一区二区| 精品少妇一区二区三区视频免付费 | 麻豆国产精品视频| 精品美女一区二区三区| 久久99精品久久久久久| 久久久无码精品亚洲日韩按摩| 久久成人免费网站| 久久久久国产精品免费免费搜索| 精品中文字幕一区二区小辣椒| 26uuu精品一区二区三区四区在线| 九色综合狠狠综合久久| 久久久一区二区三区捆绑**| 国产麻豆成人精品| 1区2区3区精品视频| 91精品1区2区| 日韩国产欧美在线播放| 久久伊人中文字幕| 9l国产精品久久久久麻豆| 一区二区三区四区在线播放| 欧美日韩国产成人在线91| 麻豆视频观看网址久久| 久久婷婷国产综合精品青草| 成人精品一区二区三区中文字幕| 成人免费在线播放视频| 欧美日韩免费在线视频| 久久99久久久欧美国产| 欧美—级在线免费片| 在线一区二区三区| 精品一区二区三区日韩| 最新热久久免费视频| 欧美日韩国产大片| 国产aⅴ综合色| 天使萌一区二区三区免费观看| 精品乱码亚洲一区二区不卡| 97久久人人超碰| 蜜桃免费网站一区二区三区| 国产精品色一区二区三区| 欧美疯狂做受xxxx富婆| 国产69精品久久99不卡| 天天综合日日夜夜精品| 国产精品久久福利| 欧美一区二区三区在| 91在线视频免费观看| 久久精品国产色蜜蜜麻豆| 亚洲精品中文在线观看| 欧美精品一区二区高清在线观看| 色综合久久综合| 韩国毛片一区二区三区| 亚洲午夜久久久久久久久电影网| 久久久99免费| 91麻豆精品国产91久久久久| 91丨九色丨黑人外教| 经典一区二区三区| 日韩精品一二三区| 亚洲欧美乱综合| 中文字幕乱码日本亚洲一区二区| 91麻豆精品国产自产在线 | 国产高清不卡一区二区| 免费观看日韩av| 午夜影院在线观看欧美| 亚洲欧美一区二区视频| 欧美国产精品v| 26uuu亚洲综合色| 欧美一区二区三区在| 欧美色网一区二区| 色综合久久88色综合天天6 | 久久国产精品99精品国产| 亚洲一卡二卡三卡四卡无卡久久| 中文久久乱码一区二区| 久久综合成人精品亚洲另类欧美| 欧美日韩国产首页| 在线观看日韩一区| 日本高清视频一区二区| 不卡欧美aaaaa| 粉嫩av一区二区三区粉嫩 | 久久婷婷综合激情| 欧美一级高清片| 日韩一区二区在线观看视频播放| 欧美日韩国产小视频| 欧美视频三区在线播放| 欧美在线小视频| 91福利国产精品| 色噜噜久久综合| 色婷婷综合久久久久中文一区二区 | 欧美在线你懂的| 在线视频综合导航| 欧美在线一二三| 欧美日韩一区二区在线观看视频 | 亚洲一区二区影院| 亚洲在线成人精品| 亚洲高清免费视频| 视频在线观看一区| 另类专区欧美蜜桃臀第一页| 精品无人码麻豆乱码1区2区| 韩国v欧美v亚洲v日本v| 国产成人aaaa| 91亚洲精华国产精华精华液| 色综合亚洲欧洲| 欧美日韩国产高清一区二区| 日韩美女视频在线| 国产色产综合产在线视频| 亚洲色图一区二区| 亚洲午夜一二三区视频| 日本成人在线网站| 韩国女主播成人在线| av电影在线观看一区| 欧美曰成人黄网| 日韩美女在线视频 | 2020国产成人综合网| 欧美极品aⅴ影院| 亚洲永久免费av| 久久精品二区亚洲w码| 国产一区二区在线观看视频| youjizz久久| 69堂亚洲精品首页| 国产人伦精品一区二区| 亚洲影院久久精品| 国产精品亚洲综合一区在线观看| 色狠狠一区二区| 2019国产精品| 亚洲成人动漫在线观看| 国产精品一二三区| 欧美日本韩国一区二区三区视频| 久久天天做天天爱综合色| 一区二区三区四区亚洲| 精品一区二区三区在线视频| 91麻豆123| 欧美精品一区二区三区久久久| 一区二区三区四区中文字幕| 狠狠色丁香久久婷婷综合丁香| 欧美综合欧美视频| 中文字幕av资源一区| 日韩精品91亚洲二区在线观看| 成a人片国产精品| 精品美女被调教视频大全网站| 亚洲综合精品久久| 丁香亚洲综合激情啪啪综合| 欧美一区二区三区成人| 亚洲乱码国产乱码精品精的特点| 精品一区二区免费| 91麻豆精品国产91久久久使用方法| 国产精品沙发午睡系列990531| 老鸭窝一区二区久久精品| 欧美色网站导航| 亚洲欧美日韩综合aⅴ视频| 国产成人精品免费| 日韩美女在线视频| 亚洲大片一区二区三区| 91丨九色丨尤物| 国产精品萝li| 不卡在线视频中文字幕| 久久免费美女视频| 国产在线精品一区二区不卡了 | 欧美日韩亚洲综合在线| 亚洲精品国产精品乱码不99| 成人污视频在线观看| 久久久久久久久久久久电影| 久久99精品国产麻豆婷婷| 日韩亚洲欧美在线| 玖玖九九国产精品| 亚洲精品一区二区三区蜜桃下载 | 亚洲精品一区二区三区在线观看 | 91浏览器打开| 中文字幕亚洲精品在线观看| 不卡av在线网|