`
Kenny.Lee
  • 浏览: 512162 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

分享封装的基于prototype的JavaScript工具类

阅读更多
/*--------------------------------------------------|
| @author KennyLee									|
| @version 2009-8-20								|
| @depend prototype.js Ver 1.6.0.3					|
|--------------------------------------------------*/

//Global defalut variable
var globalTips = {
	textareaMaxLength : 1024
}

// setup validators like: name of validator, default message, /regular
// expression/ !don't forget the / in front and the / in back!!!!
var custom_validators = {
	email : {
		defaultMessage : "This field must contain a valid email address.",
		regExp : /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-\u4e00-\u9fa5])+\.)+([a-zA-Z0-9]{2,4})+$/
	},
	creditcard : {
		defaultMessage : "This field must contain a valid credit card number.",
		regExp : /^((4\d{3})|(5[1-5]\d{2})|(6011))([- ])?\d{4}([- ])?\d{4}([- ])?\d{4}|3[4,7]\d{13}$/
	},
	number : {
		defaultMessage : "This field must have a numerical value.",
		regExp : /^[-]?\d+(\.\d+)?$/
	},
	chinese : {
		defaultMessage : "This field contain Chinese.",
		regExp : /^[\u4e00-\u9fa5]+$/i
	}
}

// Util
var theUtil = {
	changeEmailArray : function(baseArray, type) {
		var result = new Array();
		if ((Object.isArray(baseArray)) && (baseArray.size() > 0)) {
			baseArray.each( function(item) {
				var email = '';
				if (type) {
					if (isEffectiveEmail(item))// push effective E-mail
						email = item;
				} else {
					if (!isEffectiveEmail(item)) // push invalid E-mail
						email = item;
				}
				if (email != '')
					result.push(email);
			})
		}
		return (result.size() > 0) ? result : '';
	},
	// Get checkbox or radio checked elements.
	getCheckedEls : function(elArray) {
		var result = new Array();
		if ((Object.isArray(elArray)) && (elArray.size() > 0)) {
			elArray.each( function(el) {
				if (el.checked) {
					result.push(el);
				}
			})
		}
		return result.size() > 0 ? result : '';
	},
	toggleAllCheckbox : function(checkboxArray, _selected) {
		if ((Object.isArray(checkboxArray)) && (checkboxArray.size() > 0)) {
			checkboxArray.each( function(checkboxEl) {
				checkboxEl.checked = _selected;
			})
		}
	}
}

/**
 * Generate Effective E-mail Array.
 * 
 * @param itemArray
 *            Base Array
 * @return '' if Effective E-mail Array is Empty.
 */
function getEffeEmailArray(itemArray) {
	return theUtil.changeEmailArray(itemArray, true);
}

/**
 * Generate Invalid E-mail Array.
 * 
 * @param itemArray
 *            Base Array
 * @return '' if Invalid E-mail Array is Empty.
 */
function getNotEffeEmailArray(itemArray) {
	return theUtil.changeEmailArray(itemArray, false);
}

// Verify the E-mail Address.
function isEffectiveEmail(emailAddr) {
	return custom_validators['email']['regExp'].test(emailAddr);
}

// Check str if contain chinese
function isContainChinese(str) {
	return custom_validators['chinese']['regExp'].test(str);
}

// Common functions for TEXTAREA
var textareaHelper = Class.create( {
	toString : function() {
		return 'TextareaHelper';
	},
	/**
	 * analyze TEXTAREA's Value to change Array.
	 * <p>
	 * Separators are Enter, Spaces(' ') and Comma(',');
	 * 
	 * @param textareaName
	 * @return Array if success, else return '';
	 */
	analyzeToArray : function(textareaName) {
		var inputText = $(textareaName).value;
		var resultArray = '';
		if (!inputText.blank()) {
			resultArray = $w(inputText.gsub(/\s|\,/, ' '));
		}
		return resultArray;
	},
	// To Restrict the TEXTAREA's Value MaxLength.
	restrictTxtarea : function(textareaName) {
		var testareaEl = $(textareaName);
		var maxLength = globalTips['textareaMaxLength'];
		var currentTotalText = testareaEl.value;
		if (currentTotalText.length > maxLength) {
			var overrideText = currentTotalText.truncate(maxLength, '');
			testareaEl.value = overrideText;
		}
	}
})

// For Checkbox
var checkboxHelper = Class.create( {
	toString : function() {
		return 'CheckboxHelper';
	},
	// Get All Checkbox Elements By Name.
	getAllCheckBox : function(checkboxName) {
		var query = 'input[type="checkbox"][name="' + checkboxName + '"]';
		return $$(query);
	},
	getCheckedCheckbox : function(checkboxName) {
		var checkBoxEls = this.getAllCheckBox(checkboxName);
		return theUtil.getCheckedEls(checkBoxEls);
	},
	// Verify the Checkbox Elements.
	// return true if one of CheckBox Elements by choose
	isNotEmptyCheckBox : function(checkboxName) {
		return this.getCheckedCheckbox(checkboxName) != '';
	},
	// Set TRUE For All Checkbox's selected state.
	selectAllCheckbox : function(checkboxName) {
		var checkboxArr = this.getAllCheckBox(checkboxName);
		theUtil.toggleAllCheckbox(checkboxArr, true);
	},
	// Set FALSE For All Checkbox's selected state.
	clearAllCheckbox : function(checkboxName) {
		var checkboxArr = this.getAllCheckBox(checkboxName);
		theUtil.toggleAllCheckbox(checkboxArr, false);
	},
	// Check was already select all Checkboxes;
	isSelectedAllCheckBox : function(checkboxName) {
		var checkboxArr = this.getAllCheckBox(checkboxName);
		var checkedEls = theUtil.getCheckedEls(checkboxArr);
		return (checkedEls != '') && (checkedEls.size() == checkboxArr.size());
	}
})

// For Radio
var radioHelper = Class.create( {
	toString : function() {
		return 'RadioHelper';
	},
	// Get All Radio Elements by Name.
	getAllRadio : function(radioName) {
		var query = 'input[type="radio"][name="' + radioName + '"]';
		return $$(query);
	},
	getCheckedRadio : function(radioName) {
		var radioEls = this.getAllRadio(radioName);
		return theUtil.getCheckedEls(radioEls)
	},
	// Verify the Radio Elements.
	// return true if one of Radio Elements by choose
	isNotEmptyRadio : function(radioName) {
		return this.getCheckedRadio(radioName) != '';
	}
})

// For Select
var selectHelper = Class.create( {
	toString : function() {
		return 'SelectHelper';
	},
	getSelectedValue : function(selectName) {
		return $F(selectName);
	},
	getSelectedText : function(selectName) {
		var result = '';
		var options = $(selectName);
		$A(options).each( function(option) {
			if (option.selected) {
				result = option.text;
				throw $break;
			}
		})
		return result;
	}
})


有些方法其实有点多此一举,例如return $F()的,但为了有些不懂得prototype的同事也能直观的使用。

主要是select、textarea、checkbox、radio元素的常用方法,还有一些验证e-mail、中文等。
1
0
分享到:
评论

相关推荐

    JDBC封装的工具类

    JDBC封装的工具类,将所有共同的代码提取过来,形成工具类

    java常用工具类封装

    java常用工具类封装,线程池、elasticsearch高级客户端集成、word,pdf,excel等文档解析

    SpringJdbcTemplate封装工具类

    SpringJdbcTemplate封装工具包,包括规范model格式接口,封装SpringJdbcTemplate,实现分页,自适应多种数据库

    SpringBoot中封装jdbc工具类

    现在的数据层的开发,大多会使用如MyBatis或...由于部分场景下MyBatis或JPA之类无法满足我的需求,所以我打算自己封装一套查数据库的工具类。 文章地址: https://blog.csdn.net/lxyoucan/article/details/124042295

    OkHttp请求完美封装(并带工具类)

    MD5、RSA、Base64Utils、DialogUtil、ZXingUtils、GlideUtil、、、工具类 自己总结了一些必备的工具类,可直接放入工程,简单调用 对OkHttp进行了封装,简单调用,便于操作 进行了post、get、文件上传等进行封装

    solrj工具类封装

    solrj工具类封装,包括条件批量查询,批量增删改,分段修改。

    RabbitMQ工具类封装实现

    封装了RabbitMQ的订阅者线程和发布者线程(还有个初始化工厂的连接工具类),另外附加一个安卓的使用demo

    封装完善的json工具类

    将集合、数组、字符串等形式转换成json格式,封装完善的json工具类

    封装js工具类

    封装类,封装的js函数类,工具类,需要的就收藏下

    Android 封装的工具类

    HTTP网络,数据库连接,增删查改,上传下载等工具类

    java常用工具类的封装jar

    并且在平时开发中会遇到各种各样通用的一些功能,比如对json的处理,对String对象的处理,对Excel文件的处理,MD5加密处理,Bean对象处理等等,这些常用并通用的方法可以被封装成一个个工具类如StringUtil,...

    封装的比较全面的时间工具类

    封装好的时间工具类, 包括时间格式转换,获取今天周几,一月几天。

    基于Android系统Api封装常用工具类

    这个是基于Android系统Api封装常用工具类,可以直接访问https://github.com/h4de5ing/AndroidCommon去看原作者。

    Teamcenter常用方法封装的工具类

    Teamcenter常用方法封装的工具类,包含的方法有获取顶层bomline、创建文件夹、item、工艺等、添加关系、添加数据集、获取首选项中的值、根据Item获取最新版本主属性表单、获取Home文件夹、获取邮箱文件夹、获取New...

    java一键发送邮件,封装好的工具类

    java邮件发送的工具类,方法都已封装好,一键调用即可发送,支持普通文本邮件,支持带有附件的邮件,支持html代码的邮件内容

    android高德地图封装工具类

    android高德地图封装工具类地图定位,绘制路径等等android高德地图封装工具类地图定位,绘制路径等等android高德地图封装工具类地图定位,绘制路径等等android高德地图封装工具类地图定位,绘制路径等等android高德...

    Rabbitmq工具类,java工具类RabbitmqUtil

    1、java工具类RabbitmqUtil是本人封装好的直接使用 2、常用的方法都在里面 3、改一下初始化配置参数就行

    微信支付工具类--封装全部微信支付工具类

    微信支付工具---appid和商户号在配置文件中放置,没有放里面,。退款回调和付款回调也没有,退款证书自己在微信里面下载

    FastJson封装工具类(直接使用)

    这是一个封装好的FastJson工具类、里面已经处理各种情况~分享给大家

    常用方法封装工具类

    字符串操作、配置文件操作等常用方法的封装工具类。

Global site tag (gtag.js) - Google Analytics