您的位置:首页 > 其它

自己定义的验证框架

2014-04-10 11:04 309 查看
自己没事弄的一个验证框架。也不复杂,仅仅是为了试验自己心中的一点想法。。

可以研究一下,还是挺有意思的。

/*
input文本框的验证方法
obj:要验证的input控件id或者class(jquery写法)
options:传入的参数
*/

var AKvaluedat = function (obj, options) {
var defaults = {
"rule": "number" //检测类型
, "min": 1 //最小值
, "max": 1000 //最大值
, "null": true //是否空
, "null": { "def": 1 } //是否空
, "large": "#ceshi2" //大于
, "small": "#ceshi3" //小于
, "err": "" //错误信息容器
, "errShow": true //是否显示错误信息
, "minlength": 5 //文本长度
, "maxlength": 10 //文本长度
, "sync": "#ceshi3" //与另一个比较
, "func": null //验证完成之后执行的方法
}
//test
//var options = defaults;
var obj = $(obj);
if (!obj || typeof (obj) != "object") return;
var quens = [];
//初始解除事件绑定
obj.unbind("keyup blur keypress");
//追加错误信息显示
var err = null;
if (options.err) {
err = $(options.err);
}
else {
if (obj.next("span").length == 0) {
err = $("<span style='color:#bb0000' class='msg'>");
err.insertAfter(obj);
}
else {
err = obj.next();
}
}
if (!options.errShow) {
err = $("<span>");
}
//检测类型
if (options.rule) {
switch (options.rule) {
case "number":
quens.push(isNumber);
obj.bind("keypress", function (e) {
if (e.which < 48 || e.which > 59) {
return false;
}
});
break;
case "decimal":
quens.push(isDecimal);
obj.bind("keypress", function (e) {
if (e.which != 46) {
if (e.which < 48 || e.which > 59) {
return false;
}
}
});
break;
}
}
//检测整数数字
function isNumber() {
if (!obj.val().isNumber())
{
if (options.null && options.null.def) {
obj.val(options.null.def);
}
err.text("请输入数字");
bl = false;
}
}
//检测小数
function isDecimal() {
if (!obj.val().isDecimal()) {
if (options.null && options.null.def) {
obj.val(options.null.def);
}
err.text("请输入数字");
bl = false;
}
}
//检测最小值
function isMin() {
if (parseInt(obj.val()) < options.min) {
err.text("请输入大于等于" + options.min + "的值。");
bl = false;
}

}
//检测最大值
function isMax() {
if (parseInt(obj.val()) > options.max) {
err.text("请输入小于等于" + options.max + "的值。");
bl = false;
}
}
//检测空值
function isNNull () {
if (obj.val().isNull()) {
if (options.null.def) {
obj.val(options.null.def);
bl = false;
}
else {
err.text("请不要填写空值");
bl = false;
}
}
}
//检测大于
function isLarge () {
if (parseInt(obj.val()) < parseInt($(options.large).val())) {
err.text("请不要小于之前的数值");
bl = false;
}
}
//检测小于
function isSmall () {
if (parseInt(obj.val()) > parseInt($(options.small).val())) {
err.text("请不要大于之后的数值");
bl = false;
}
}
//检测长度
function isMinLength () {
if (!obj.val().min(options.minlength)) {
err.text("请填入长度不小于" + options.minlength + "的文本");
bl = false;
}
}
function isMaxLength () {
if (!obj.val().max(options.maxlength)) {
err.text("请填入长度不大于" + options.maxlength + "的文本");
bl = false;
}
}
//检测是否一样
function isSync () {
if (obj.val() != $(options.sync).val()) {
err.text("两次输入的不一样");
bl = false;
}
}
//讲方法加入队列
if (options.min) quens.push(isMin);
if (options.max) quens.push(isMax);
if (options.null) quens.push(isNNull);
if (options.large) quens.push(isLarge);
if (options.small) quens.push(isSmall);
if (options.minlength) quens.push(isMinLength);
if (options.maxlength) quens.push(isMaxLength);
if (options.sync) quens.push(isSync);
if (options.func) quens.push(options.func);
//讲队列绑定
obj.bind("keyup blur", function () {
var bl = true;
//obj.next().text("");
err.text("");
for (var i in quens) {
if (bl) quens[i]();
}
});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: