首页
文章
文库
登录
|
注册
最新
推荐
热门
主题
关注
收藏
反馈
关注公众号
js常用的一些自定义涵数
来源
本站原创
佚名
// javascript library ,用于校验表单数据
// 唐志坚 提供
// 高学军 整理修改于 2002.12.26 ,添加了注释,修正了一些BUG,删除了没用的代码,并增加了几个function
// 简要目录:
// 1.是否为空或全是空字符
// 2.字符串是否只包含0到9的数字
// 3.是否整数(允许带正负号)
// 4.是否数字
// 5.小数(m,n),忽略小数首尾的0,不允许正负号
// 6.字符串是否全是字母
// 7.字符串是否全是字母和数字
// 8.日期
// 9.居民身份证号码
// 10.电话号码
// 11.邮政编码
// 12.是否合法的email
// 13.一列checkbox中是否至少有一个checked 14.一列checkbox中是否只有一个checked
// 15.一列checkbox中是否全部checked 16.多个下拉框不能一样
// 其它未编号的function为辅助,也可以单独使用
// 注意:除固定格式的输入项如日期,邮政编码和居民身份证号码外,其余均未判断长度和是否为空。
var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var whitespace = " \t\n\r";
var defaultEmptyOK = true
//是否 null 或者 空
function isEmpty(s)
{
return ((s == null) || (s.length == 0) )
}
//1.是否为空或全是空字符
function isWhitespace (s)
{ var i;
if (isEmpty(s)) return true;
for (i = 0; i < s.length; i++)
{
var c = s.charAt(i);
if (whitespace.indexOf(c) == -1) return false;
}
return true;
}
//从s里去掉包含在bag中的字符,s="abcd" bag="ace" return "bd"
function stripCharsInBag (s, bag)
{ var i;
var returnString = "";
for (i = 0; i < s.length; i++)
{
var c = s.charAt(i);
if (bag.indexOf(c) == -1) returnString += c;
}
return returnString;
}
//从s里去掉不包含在bag中的字符 s="abcd" bag="ace" return "ac"
function stripCharsNotInBag (s, bag)
{ var i;
var returnString = "";
for (i = 0; i < s.length; i++)
{
var c = s.charAt(i);
if (bag.indexOf(c) != -1) returnString += c;
}
return returnString;
}
//从s里去掉空字符,s="ab c d " return "abcd"
function stripWhitespace (s)
{ return stripCharsInBag (s, whitespace)
}
//字符c是否在字符串s中
function charInString (c, s)
{ for (i = 0; i < s.length; i++)
{ if (s.charAt(i) == c) return true;
}
return false
}
//去掉字符串前面的空字符
function stripInitialWhitespace (s)
{ var i = 0;
while ((i < s.length) && charInString (s.charAt(i), whitespace))
i++;
return s.substring (i, s.length);
}
//字符是否为字母
function isLetter (c)
{ return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}
//字符是否为0-9
function isDigit (c)
{ return ((c >= "0") && (c <= "9"))
}
//字符是否为字母或数字
function isLetterOrDigit (c)
{ return (isLetter(c) || isDigit(c))
}
//字符是否为数字或"-"
function isTel(c)
{ return (((c >= "0") && (c <= "9"))|| (c=="-"))
}
//2.字符串是否只包含0到9的数字
function isInteger (s)
{ var i;
if (isEmpty(s))
if (isInteger.arguments.length == 1) return defaultEmptyOK;
else return (isInteger.arguments[1] == true);
for (i = 0; i < s.length; i++)
{
var c = s.charAt(i);
if (!isDigit(c)) return false;
}
return true;
}
//3.是否整数(允许带正负号)
function isSignedInteger (s)
{ if (isEmpty(s))
if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;
else return (isSignedInteger.arguments[1] == true);
else {
var startPos = 0;
var secondArg = defaultEmptyOK;
if (isSignedInteger.arguments.length > 1)
secondArg = isSignedInteger.arguments[1];
if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
startPos = 1;
return (isInteger(s.substring(startPos, s.length), secondArg))
}
}
//是否为大于零的整数(允许正负号)
function isPositiveInteger (s)
{ var secondArg = defaultEmptyOK;
if (isPositiveInteger.arguments.length > 1)
secondArg = isPositiveInteger.arguments[1];
return (isSignedInteger(s, secondArg)&& ( (isEmpty(s) && secondArg) || (parseInt (s,10) > 0) ) );
}
//是否为大于等于零的整数(允许正负号)
function isNonnegativeInteger (s)
{ var secondArg = defaultEmptyOK;
if (isNonnegativeInteger.arguments.length > 1)
secondArg = isNonnegativeInteger.arguments[1];
return (isSignedInteger(s, secondArg)
&& ( (isEmpty(s) && secondArg) || (parseInt (s,10) >= 0) ) );
}
//是否为小于零的整数(允许正负号)
function isNegativeInteger (s)
{ var secondArg = defaultEmptyOK;
if (isNegativeInteger.arguments.length > 1)
secondArg = isNegativeInteger.arguments[1];
return (isSignedInteger(s, secondArg)
&& ( (isEmpty(s) && secondArg) || (parseInt (s,10) < 0) ) );
}
//是否为小于等于零的整数(允许正负号)
function isNonpositiveInteger (s)
{ var secondArg = defaultEmptyOK;
if (isNonpositiveInteger.arguments.length > 1)
secondArg = isNonpositiveInteger.arguments[1];
return (isSignedInteger(s, secondArg)
&& ( (isEmpty(s) && secondArg) || (parseInt (s,10) <= 0) ) );
}
//4.是否数字
function isFloat (s)
{
var i;
var seenDecimalPoint = false;
if (isEmpty(s))
if (isFloat.arguments.length == 1) return defaultEmptyOK;
else return (isFloat.arguments[1] == true);
if (s == ".") return false;
for (i = 0; i < s.length; i++)
{
// Check that current character is number.
var c = s.charAt(i);
if ((c == ".") && !seenDecimalPoint) seenDecimalPoint = true;
else if (!isDigit(c)) return false;
}
return true;
}
//是否数字(允许正负号)
function isSignedFloat (s)
{ if (isEmpty(s))
if (isSignedFloat.arguments.length == 1) return defaultEmptyOK;
else return (isSignedFloat.arguments[1] == true);
else {
var startPos = 0;
var secondArg = defaultEmptyOK;
if (isSignedFloat.arguments.length > 1)
secondArg = isSignedFloat.arguments[1];
// skip leading + or -
if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
startPos = 1;
return (isFloat(s.substring(startPos, s.length), secondArg))
}
}
//5.小数(m,n),忽略小数首尾的0,不允许正负号
function isDecimal(s,m,n){
if(!isFloat(s)) return false;
if(String(parseInt(s,10)).length > m-n) return false;
var ss = String(parseFloat(s));
if(ss.indexOf(".")>=0 && ss.substring( ss.indexOf(".") + 1, ss.length).length > n ) return false;
return true;
}
//6.字符串是否全是字母
function isAlphabetic (s)
{ var i;
if (isEmpty(s))
if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
else return (isAlphabetic.arguments[1] == true);
for (i = 0; i < s.length; i++)
{
// Check that current character is letter.
var c = s.charAt(i);
if (!isLetter(c))
return false;
}
// All characters are letters.
return true;
}
//7.字符串是否全是字母和数字
function isAlphanumeric (s)
{ var i;
if (isEmpty(s))
if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
else return (isAlphanumeric.arguments[1] == true);
for (i = 0; i < s.length; i++)
{
var c = s.charAt(i);
if (! (isLetter(c) || isDigit(c) ) )
return false;
}
return true;
}
//8.日期,format 可设定为 "yyyy-MM-dd"(注意大小写),分隔符可变
function toValidateDate(str,format) {
if(str.length != format.length) return false;
var year = 2000;
var month = 1;
var day = 1;
var hour = 0;
var minute = 0;
var second = 0;
if(format.indexOf("yyyy") != -1) {
if(isNaNEx(year = SearchEx(str,format,"yyyy"))) return false;
format = format.replace(/yyyy/,year);
}
if(format.indexOf("MM") != -1) {
if(isNaNEx(month = SearchEx(str,format,"MM"))) return false;
format = format.replace(/MM/,month);
}
if(format.indexOf("dd") != -1) {
if(isNaNEx(day = SearchEx(str,format,"dd"))) return false;
format = format.replace(/dd/,day);
}
if(format.indexOf("HH") != -1) {
if(isNaNEx(hour = SearchEx(str,format,"HH"))) return false;
if(parseInt(hour,10) < 0 || parseInt(hour,10) > 23) return false;
format = format.replace(/HH/,hour);
}
if(format.indexOf("mm") != -1) {
if(isNaNEx(minute = SearchEx(str,format,"mm"))) return false;
if(parseInt(minute,10) < 0 || parseInt(minute,10) > 59) return false;
format = format.replace(/mm/,minute);
}
if(format.indexOf("ss") != -1) {
if(isNaNEx(second = SearchEx(str,format,"ss"))) return false;
if(parseInt(second,10) < 0 || parseInt(second,10) > 59) return false;
format = format.replace(/ss/,second);
}
if(format != str) return false;
return isValidDate(year,month,day);
}
//日期
function isNaNEx(str) {
if(str == "") return true;
if(isNaN(str)) return true;
if(str.indexOf(".") != -1) return true;
return false;
}
//日期
function SearchEx(source,pattern,str) {
var index = pattern.indexOf(str);
if(index == -1) return "error";
return source.substring(index,index + str.length);
}
//日期
function isValidDate(year,month,day) {
month = parseInt(month,10);
day = parseInt(day,10);
if(month < 1 || month > 12) return false;
if(day < 1 || day > 31) return false;
if((month == 4 || month == 6 || month == 9 || month == 11) && (day == 31)) return false;
if (month == 2) {
var leap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day > 29 || (day == 29 && !leap)) return false;
}
return true;
}
//9.居民身份证号码(15或18位,最后一位数字或字母,其余数字,生日合法)
function isResidentID (s){
if(s.length!=15 && s.length!=18) return false;
if(!isAlphanumeric(s)) return false;
var birthday;
if(s.length==18){
if( !isInteger(s.substring(0,s.length-1)) ) return false;
birthday = s.substring(6,14);
}
if(s.length==15){
if( !isInteger(s) ) return false;
birthday = "19"+s.substring(6,12);
}
if(!isValidDate( birthday.substring(0,4), birthday.substring(4,6), birthday.substring(6,8) )) return false;
return true;
}
//字符串按格式重组(reformat("20021213","",4,"-",2,"-",2),会返回2002-12-13)
function reformat (s)
{ var arg;
var sPos = 0;
var resultString = "";
for (var i = 1; i < reformat.arguments.length; i++) {
arg = reformat.arguments[i];
if (i % 2 == 1) resultString += arg;
else {
resultString += s.substring(sPos, sPos + arg);
sPos += arg;
}
}
return resultString;
}
//10.电话号码( 数字和+,-,() )
function isPhoneNumber(s){
if(stripCharsInBag(s,"0123456789-()+")!="") return false;
return true;
}
//11.邮政编码
function isPostCode(s){
return(isInteger(s) && s.length==6);
}
//是否只包含合法的email字符
function isvalidEmailChar (s)
{ var i;
for (i = 0; i < s.length; i++)
{
var c = s.charAt(i);
if (! (isLetter(c) || isDigit(c) || (c=='@') || (c=='.') || (c=='_') || (c=='-') || (c=='+')) ) {
return false;
}
}
return true;
}
//12.是否合法的email
function isEmail (s)
{ if (isEmpty(s))
if (isEmail.arguments.length == 1) return defaultEmptyOK;
else return (isEmail.arguments[1] == true);
if (isWhitespace(s)) return false;
if (!isvalidEmailChar(s)) return false;
atOffset = s.lastIndexOf('@');
if ( atOffset < 1 )
return false;
else {
dotOffset = s.indexOf('.', atOffset);
if ( dotOffset < atOffset + 2 ||
dotOffset > s.length - 2 ) {
return false;
}
}
return true;
}
//13.一列checkbox中是否至少有一个checked,输入checkbox对象,输出 t or f
function isChecked(checkbox_name)
{
var items=checkbox_name.length;
if(items>1){
for(i=0;i
{
if(checkbox_name[i].checked==true) return true;
}
}
else
if(checkbox_name.checked==true) return true;
return false;
}
//14.一列checkbox中是否只有一个checked,输入checkbox对象,输出 t or f
function isCheckedOne(checkbox_name)
{
var items=checkbox_name.length;
var count=0;
if(items>1){
for(i=0;i
{
if(checkbox_name[i].checked==true) count++;
}
if(count==1) return true;
else
return false;
}
else
{
if(checkbox_name.checked==true) return true;
else
return false;
}
}
//15.一列checkbox中是否全部checked,输入checkbox对象,输出 t or f
function checkAll(checkbox_names,checkbox_select)
{
var items=checkbox_names.length;
if(items>1)
{
for(i=0;i
}
else
checkbox_names.checked=checkbox_select.checked;
}
//16.多个下拉框不能一样
function selectUnique(theForm)
{
for (i=0; i
{
e = theForm.elements[i];
if ( e.type=="select-one" && !e.isDisabled)
{
for(j=0; j
{
e2 = theForm.elements[j];
if ( e2.type=="select-one" && !e2.isDisabled)
{
if(e!=e2 && e.options[e.selectedIndex].value==e2.options[e2.selectedIndex].value)
{
e.focus();
return false;
}
}
}
}
}
return true;
}
关联文档
DeepSeek 搞钱指令库
T GDWJ 016 公立医院全面预算管理工作指南
人工智能技术发展与应用实践
DeepSeek行业应用案例集解锁
2025AI大模型产业市场前景及投资研究报告
大家都在看
一文读懂:模型上下文协议(MCP)
AI产品经理如何搭建AI业务架构:从基础到应用的三层架构设计
智能BI平台架构的全景解析与应用场景
大模型是怎么被训练出来的?
渠道分析从入门到精通
全面解读DeepSeek蒸馏技术:模型蒸馏和数据蒸馏
一文分享 ChatBI 实践经验
深度学习五大模型:CNN、Transformer、BERT、RNN、GAN解析
推荐文档
工业企业信息化和工业化融合评估规范
企业数字化转型认识
数字新时代法治CIO
企业数据和技术架构规划项目成果汇报
小游戏项目管理的那些事
2017技术趋势