<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
.note {display:none;}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
<script type="text/javascript">
//jquery 必须填写的项
(function($){
$.fn.myIsMust = function(options){
var defaults = {
}
options = $.extend(defaults,options); var dom = this;
var val = "";
if(dom.length != 0)
{
if(dom.attr("id").indexOf("DDL_") != -1)
val = "0"; dom.after("<span class='error'></span>");
$("#ButtonManage").click(function()
{
if(dom.val() == val)
{
dom.next(".error").html(dom.parent().find(".note").html());
return false;
}
}) dom.blur(function()
{
if(dom.val() != val)
dom.next(".error").html("");
else
dom.next(".error").html(dom.parent().find(".note").html());
})
}
}
})(jQuery);$(function(){
$("#TB_UserName").myIsMust();
$("#DDL_UserGroup").myIsMust();
})
</script></head><body>
<table class="table" style="margin-top:8px;">
<thead>
<tr id="manage_UserName">
<th style="width:120px;">登录名</th>
<td>
<span class="note">必须填写,登录后台的用户名称,可以是中文可以是字母。</span>
<input name="TB_UserName" type="text" id="TB_UserName" />
</td>
</tr><tr id="manage_DirName">
<th style="width:120px;">目录名</th>
<td>
<span class="note">必须为字母</span>
<input name="TB_DirName" type="text" id="TB_DirName" />
</td>
</tr><tr id="manage_BirthDate">
<th style="width:120px;">出生日期</th>
<td>
<span class="note">填写出生年月日,格式1980-10-10</span>
<input name="TB_BirthDate" type="text" id="TB_BirthDate" />
</td>
</tr><tr id="manage_Email">
<th style="width:120px;">邮箱</th>
<td>
<span class="note">用户的Email。</span>
<input name="TB_Email" type="text" id="TB_Email" />
</td>
</tr><tr id="manage_Age">
<th style="width:120px;">年龄</th>
<td>
<span class="note">用户的年龄</span>
<input name="TB_Age" type="text" id="TB_Age" />
</td>
</tr><tr id="manage_UserGroup">
<th style="width:120px;">所在用户组</th>
<td>
<span class="note">选择用户所在的用户组,那么该用户将具备所选用户组的所有权限。</span>
<select name="DDL_UserGroup" id="DDL_UserGroup">
<option selected="selected" value="0">请选择...</option>
<option value="1">管理员</option>
</select>
</td>
</tr>
<tr>
<th> </th>
<td><input type="submit" name="ButtonManage" value="添加" id="ButtonManage" class="button" /><input type="reset" class="button" value='重置' /></td>
</tr>
</table>
</body>
</html>上面代码已经实现了必须填写的项,我想把功能再增强一点。如通过下面设置
$("#TB_DirName").myIsMust({IsMust:false,type:"letter"});
可以设置TB_DirName为非必填项,但是如果输入了字符就必须为字母$("#TB_BirthDate").myIsMust({type:"date"});
可以设置TB_BirthDate为必须填写项,必须为日期格式$("#TB_Email").myIsMust({type:"email"});必须填写项,必须为email格式$("#TB_Age").myIsMust({type:"int"});必须填写项,为数字类型总共需要设置2个参数,都是ismust是否需要填写,默认是true
type为检测的类型,默认为不检测.谢谢各位了~
解决方案 »
- js 如何获取id的值?
- Extjs grid排序报“对象不支持此属性或方法”错误
- 关于截获其他网页新闻内容
- 初学js,问一个简单js代码,大家给看看??(总提示document.all(...)为空或不是对象,我想选1出层1,选2出层2)
- 关于下拉框onChange后,下拉框的默认选中项又变回到onChange之前的问题
- 急求答案!这段代码为何在IE7下不起作用?
- 引用别的js文件的问题
- 网页上的图片,当把鼠标移上去后,会出现一排按纽:打印,保存,什么的
- 有关字符串转换数值的问题。(给分)
- 代码:<a href="" onclick="javascript:window.alert('asda')">Test</a>,这是一个hyperlink,我想点击它的时候只执行javascript,为不想它打开新页面,如何做到?
- 点小图显示大图的效果
- 在线等。。。。
(function($) {
/*****************************************************************************************/
/* check form elements
/* example:
/* [html]
/* <input type='text' name='userName' /><span id='nameTip'></span>
/* <input type='button' id='submit' value='update' />
/* [javascript]
/* $('#submit').formValidator(
/* rules: {
/* 'userName': {
/* request: true, 不能为空
/* show: true, 可见时才验证(visibility|display)
/* maxLen: 30, 最大长度
/* minLen: 6, 最小长度
/* valueTo: '1', 与valueTo表示的字符串相同
/* valueToMsg: '值和valueTo不相同时的提示
/* valueOff: '2', 与valueOff表示的字符串不相同
/* valueOffMsg: '值和valueOff相同时的提示
/* reg: (/\d+/), 要匹配的正则
/* regMag: '格式不正确', 正则不匹配的提示
/* matchTo: '#elementAttribute_reg2', 与matchTo表示的element的值相同
/* matchToMsg: '与xx的输入不一致', 值不相同时的提示
/* radio: 'elementAttribute_reg3,elementAttribute_reg4'
/* radioMsg: '以上几项中必填一项,包括当前比较项,此时这几项都要设置为request:false'
/* ajax: null || {msg: 'loading...', smsg: '成功', emsg: '失败', delay: 10, url: 'xxx.xxx'} 是否进行ajax验证
/* msg: '' 没有错误时的提示
/* }
/* },
/* tips: function(element, result) {
/* $('nameTip').html(result.msg);
/* },
/* callBack: function(btn, success) {
/* alert(success);
/* }
/* });
/***************************************************************************************/
$.fn.formValidator = function(op) {
var p = $.extend({ajaxList: {}}, $.fn.formValidator.defaultOptions, op);
$.each(p.rules, function(n, v) {
if(v.ajax) {
p.ajaxList[n] = {s: false, v: ''};
o(n).change(function() {
p.tips(this, check(this, n));
});
} else {
o(n).blur(function() {
p.tips(this, check(this, n));
});
}
});
$(this).click(function(e) {
var s = true;
var m;
var t;
$.each(p.rules, function(n, v) {
t = o(n);
m = check(t, n);
p.tips(t, m);
if(!m.success) {
s = false;
return false;
}
});
$.each(p.ajaxList, function(n, v) {
if(!v.s) {
s = false;
return false;
}
});
if(!s) {
e.preventDefault();
e.stopPropagation();
}
p.callBack(this, s);
return s;
});
function check(o, key) {
var rule = p.rules[key];
var element = $(o);
var defaultMsg = rule.msg || '';
if((element.css('visibility') == 'hidden' || element.css('display') == 'none') && rule.show) {
return {success: 1, msg: defaultMsg};
}
var v = $.trim(element.val());
if(v == '') {
if(rule.request) {
return {success: 0, msg: '不能为空'};
} else {
if(!rule.request.radio) {
if(typeof(p.ajaxList[key]) != 'underfined') {
p.ajaxList[key].s = true;
}
return {success: 1, msg: defaultMsg};
} else {
var is = 0;
$.each(p.radio.split(','), function(i, v) {
if($.trim(o(v).eq(0).val()) != '') {
is = 1;
return false;
}
});
return {success: is, msg: (is? defaultMsg : rule.radioMsg)};
}
}
}
if(rule.reg && !rule.reg.test(v)) {
return {success: 0, msg: rule.regMsg};
}
if(rule.valueTo && v != rule.valueTo) {
return {success: 0, msg: rule.valueToMsg};
}
if(rule.valueOff && v == rule.valueOff) {
return {success: 0, msg: rule.valueOffMsg};
}
var l = v.replace(/[^\x00-\xff]/g, 'xx').length;
if(rule.maxLen && l > rule.maxLen) {
return {success: 0, msg: '长度不能超过' + rule.maxLen + '个字符', len: l};
}
if(rule.minLen && l < rule.minLen) {
return {success: 0, msg: '长度不能小于' + rule.minLen + '个字符', len: l};
}
if(rule.matchTo) {
var s = o(rule.matchTo).eq(0).val();
if(v != s) {
return {success: 0, msg: rule.matchToMsg};
}
}
if(rule.ajax) {
if(p.ajaxList[key].v != element.val()) {
p.ajaxList[key].s = false;
p.ajaxList[key].v = element.val();
$.ajax({
url: rule.ajax.url,
type: 'POST',
data: key + '=' + element.val(),
success: function(v) {
if(v) {
p.ajaxList[key] = true;
p.tips(element, {success: 1, msg: rule.ajax.smsg});
} else {
p.tips(element, {success: 0, msg: rule.ajax.emsg});
}
},
error: function() {
p.ajaxList[key] = true;
p.tips(element, {success: 1, msg: rule.ajax.msg});
}
});
}
return {success: 1, msg: rule.ajax.msg};
}
return {success: 1, msg: defaultMsg};
}
function o(k) {
return $("[name='" + k + "']");
}
}
$.fn.formValidator.defaultOptions = {
rules:{
/*'elementAttribute_reg': {
request: true,
show: true,
maxLen: 30,
minLen: 6,
valueTo: '1',
valueToMsg: '值不等于1',
valueOff: '2',
valueOffMsg: '值不能等于2',
reg: (/\d+/),
regMag: '格式不正确',
matchTo: 'elementAttribute_reg2',
matchToMsg: '与xx的输入不一致',
radio: 'elementAttribute_reg3,elementAttribute_reg4'
radioMsg: '以上几项中必填一项'
ajax: null || {msg: 'loading...', smsg: '成功', emsg: '失败', delay: 10, url: 'xxx.xxx'}
msg: ''
}*/
},
tips: function(element, result) {
//alert(result.msg);
},
callBack: function(btn, success) {
//alert(success);
}
};
})(jQuery);