当前位置: 代码迷 >> JavaScript >> 日常JS页面证验封装
  详细解决方案

日常JS页面证验封装

热度:219   发布时间:2012-11-14 10:12:18.0
日常JS页面验证封装
/***********************************
* JSP页面输入有效性校验
* author:
* create date:
* update date:
* update content: 此文件在原先使用文件checkvalue.jsp基础上,结合原先的使用经验做了如下改进
* 1 增加函数CheckSpecChar(FormName),直接校验整个form的所有输入控件是否包含非法字符。
* 2 函数CheckInputValue原先传入参数输入框内容,改为输入框对象名称,这样一旦校验不通过,光标可以定位到对象。
* 3 优化日期校验,原先对日期格式只校验输入字符,没有校验长度以及yyyy-mm-dd格式中年月日各自是否满足要求。
* 4 优化Email格式校验
* 5 原先输入框允许为空,同时如果输入内容有最短长度限制时候,无法校验,现已修改,能够支持。
*
* 增加系数Rate类型,不能大于1
* 增加时间Time类型,24h:mi格式
*********************************/
//提交表单时清理所有的非隐藏表单元素值的左右空格并校验是否含有非法字符--liuchuang
function submitclean(FormName){
var str = "'<>\""; //非法字符集
for (var index = 0; index < FormName.elements.length; index++) {
if(FormName.elements[index].type != "hidden"){
//去除左右空格
FormName.elements[index].value = FormName.elements[index].value.replace(/^\s+|\s+$/g,"");
for(i = 0; i < FormName.elements[index].value.length; i++){
if (str.indexOf(FormName.elements[index].value.substring(i,i + 1)) >= 0){
alert("输入的内容不能含有非法字符:" + str);
FormName.elements[index].focus();
return false;
}
}
}
}
return true;
}
//该函数用于带查询条件的显示页面,页面加载时判断哪个form元素应该默认获得焦点--liuchuang
function formFocus(FormName){
var isfocus =false;
for (var index = 0; index < FormName.elements.length; index++) {
if(FormName.elements[index].className=='lc') continue;
if(FormName.elements[index].tagName=='INPUT'
|| FormName.elements[index].tagName=='SELECT'
|| FormName.elements[index].tagName=='TEXTAREA')
{
if(FormName.elements[index].type != "hidden" && FormName.elements[index].value!=""){

FormName.elements[index].focus();
isfocus =true;
break;
}
}
}
if(!isfocus){
for (var index = 0; index < FormName.elements.length; index++) {
if(FormName.elements[index].className=='lc') continue;
if(FormName.elements[index].tagName=='INPUT'
|| FormName.elements[index].tagName=='SELECT'
|| FormName.elements[index].tagName=='TEXTAREA')
{
if(FormName.elements[index].type != "hidden"){

FormName.elements[index].focus();
break;
}
}
}

}
}

//清除文本框字符串的前后所有空格
String.prototype.trim = function() //removes the Left side and the right side blank space
{
return this.replace(/(^\s*)|(\s*$)/g, "")
}

//文本框获得焦点后,如果文本框不为空,则将焦点放置在字符串之后
function cc() //generater after onfocus()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart("character",e.value.length);
r.collapse(true);
r.select();
}

//判断Form中所有对象的值中是否有特殊字符
function CheckSpecChar(FormName){
//传入参数为form的名称
bString = "'<>\""; //非法字符集
for (var ObjID=0; ObjID < FormName.elements.length; ObjID++) {
for(i = 0; i < FormName.elements[ObjID].value.length; i ++){
if (bString.indexOf(FormName.elements[ObjID].value.substring(i,i+1)) >= 0){
alert('输入的内容不能包含非法字符:' + bString);
FormName.elements[ObjID].focus();
return false;
}
}
}
return true;
}

//校验不合格后,光标自动定位到不符合格式要求的控件中
function CheckInputValue(input_desc,//输入框内容的中文名称
ObjName ,//输入框对象名称
is_empty,//false-不可以为空;true-可以为空
input_type,//输入框内容类型
input_minlength,//输入框内容的最小长度
input_maxlength//输入框内容的最长长度
){

//不能为空
if(!is_empty && CheckIsNull(ObjName.value)){
alert(input_desc + "不能为空!");
ObjName.value="";//liuchuang补充于20080619:输入空格后,将空格清除!
ObjName.focus();
return false;
}
if(is_empty && CheckIsNull(ObjName.value)){
return true;
}
//输入框内容的最小长度限制,并且输入框不为空,(剔除输入框为空的情况)
if(input_minlength != 0 && ObjName.value.length < input_minlength && ObjName.value.length > 0){
alert(input_desc + "长度不能低于" + input_minlength + "个字符!");
ObjName.focus();
return false;
}

if(input_maxlength != 0 && ObjName.value.length > input_maxlength ){
alert(input_desc + "长度不能超过" + input_maxlength + "个字符!");
ObjName.focus();
return false;
}

/***************
* 统一调用函数CheckSpecChar(FormName),整个form一次检查
* ***************/
/*
if(input_type == "String"){
if(!CheckString(ObjName.value)){
alert(input_desc + "不能包含<、>、'、\"、/、\\");
ObjName.focus();
return false;
}
}*/
if(input_type == "StringNoError"){
if(!CheckStringNoError(ObjName.value)){
alert(input_desc + "不能包含<、>、'、\"、/、\\");
ObjName.focus();
return false;
}
}

if(input_type == "StringNoSpace"){
if(!CheckStringNoSpace(ObjName.value)){
alert(input_desc + "不能包含空格!");
ObjName.focus();
return false;
}
}

if(input_type == "StringNo6up"){
if(!CheckStringNo6up(ObjName.value)){
alert(input_desc + "不能包含\^!");
ObjName.focus();
return false;
}
}

if(input_type == "StringNofg"){
if(!CheckStringNofg(ObjName.value)){
alert(input_desc + "不能包含※!");
ObjName.focus();
return false;
}
}

if(input_type == "StringNoPercent"){
if(!CheckStringNoPercent(ObjName.value)){
alert(input_desc + "不能包含%!");
ObjName.focus();
return false;
}
}

if(input_type == "StringNoSpacePercent"){
if(!CheckStringNoSpacePercent(ObjName.value)){
alert(input_desc + "不能包含空格和%!");
ObjName.focus();
return false;
}
}

if(input_type == "Number"){
if(!CheckNumber(ObjName.value)){
alert(input_desc + "是数字,只能全部由数字组成!");
ObjName.focus();
return false;
}
}

if(input_type == "Number24"){
if(!CheckNumber24(ObjName.value)){
alert(input_desc + ",只能在1-24之间!");
ObjName.focus();
return false;
}
}

if(input_type == "Telephone"){
if(!CheckTelephone(ObjName.value)){
//alert(input_desc + "是电话号码数字、-组成!");
alert(input_desc + "只能由数字、-组成!");
ObjName.focus();
return false;
}
}

if(input_type == "Money"){
if(!CheckMoney(ObjName.value)){
alert(input_desc + "是金额,由数字、.组成!");
ObjName.focus();
return false;
}
}
if(input_type == "Rate"){
if(!CheckRate(ObjName.value)){
alert(input_desc + "是系数,不能大于1!");
ObjName.focus();
return false;
}
}
if(input_type == "Time"){
if(!CheckTime(ObjName.value)){
alert(input_desc + "是时间,格式如下24h:mi!");
ObjName.focus();
return false;
}
}
if(input_type == "Time2"){
if(!CheckTime2(ObjName.value)){
alert(input_desc + "是时间,格式如下24h:mi:ss!");
ObjName.focus();
return false;
}
}
if(input_type == "Date"){
if(!CheckDate(ObjName,input_desc)){
return false;
}
}
if(input_type == "Month"){
if(!CheckMonth(ObjName.value)){
alert(input_desc + "是月份,格式如下yyyy-MM!");
ObjName.focus();
return false;
}
}
if(input_type == "Email"){
if(!CheckEmail(ObjName.value)){
alert(input_desc + "是Email,必须符合格式要求!");
ObjName.focus();
return false;
}
}

if(input_type == "Password"){
if(!CheckPassword(ObjName.value)){
alert(input_desc + "只能包含数字和字母!");
ObjName.focus();
return false;
}
}

if(input_type == "Letter"){
if(!CheckLetter(ObjName.value)){
alert(input_desc + "必须是字母!");
ObjName.focus();
return false;
}
}

if(input_type == "UpLetter"){
if(!CheckUpLetter(ObjName.value)){
alert(input_desc + "必须是大写字母!");
ObjName.focus();
return false;
}
}

if(input_type == "LowLetter"){
if(!CheckLowLetter(ObjName.value)){
alert(input_desc + "必须是小写字母!");
ObjName.focus();
return false;
}
}

if(input_type == "Chinese"){
if(!CheckChinese(ObjName.value)){
alert(input_desc + "必须是全部为中文!");
ObjName.focus();
return false;
}
}
if(input_type == "NoChinese"){
if(!CheckNoChinese(ObjName.value)){
alert(input_desc + "不能包含中文!");
ObjName.focus();
return false;
}
}
return true;
}

//判断控件中字符串是否为空
//By ChengWei 2007-12-12
function CheckIsNull(str) {
if (str.Trim().length == 0) {
return true; //空值
}
return false; //不为空
}
//判断是否没有包含空格
function CheckStringNoSpace(str){
var i;
for (i = 0; i < str.length; i++){
if (str.charAt(i) == " "){
return false;
}
}
return true;
}
//判断是否没有包含"/","\"
function CheckStringNoError(str){
//传入参数为form的名称
bString = "'<>\"\\/"; //非法字符集

for(i = 0; i < str.length; i ++){
if (bString.indexOf(str.substring(i,i+1)) >= 0){
return false;
}
}
return true;
}
//判断是否没有包含%
function CheckStringNoPercent(str){
var i;
for (i = 0; i < str.length; i++){
if (str.charAt(i) == "%"){
return false;
}
}
return true;
}

//判断是否没有包含\^
function CheckStringNo6up(str){
var i;
for (i = 0; i < str.length; i++){
if (str.charAt(i) == "\^"){
return false;
}
}
return true;
}

//判断是否没有包含\*
function CheckStringNofg(str){
var i;
for (i = 0; i < str.length; i++){
if (str.charAt(i) == "※"){
return false;
}
}
return true;
}

//判断是否没有空格和%
function CheckStringNoSpacePercent(str){
var i;
for (i = 0; i < str.length; i++){
if (str.charAt(i) == " " || str.charAt(i) == "%"){
return false;
}
}
return true;
}
//检验是否为数字(整型)
function CheckNumber(str){
var i;
//alert(parseInt(str));
for (i = 0; i < str.length; i++){
if (str.charAt(i) < "0" || str.charAt(i) > "9"){
return false;
}
}
return true;
}

//检验24小时范围
function CheckNumber24(str){
var i;
//alert(parseInt(str));
for (i = 0; i < str.length; i++){
if (str.charAt(i) < "0" || str.charAt(i) > "9"){
return false;
}
}
if(parseInt(str)<1||parseInt(str)>24){
return false;
}
return true;
}

//判断是否符合电话号码,Telephone,由数字和-组成
function CheckTelephone(str){
var i
for (i = 0; i < str.length; i++){
if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != "-"){
return false;
}
}
return true;
}
//检验是否为金额(浮点)
function CheckMoney(str){
var i;
for (i = 0; i < str.length; i++){
if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != "."){
return false;
}
}
return true;
}
//检验是否为系数,小于等于1
function CheckRate(str){
var i;
for (i = 0; i < str.length; i++){
if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != "."){
return false;
}
}
if (parseFloat(str) >1 ){
return false;
}
return true;
}

//检验是否为时间,格式24h:mi
function CheckTime(str){
var i;
for (i = 0; i < str.length; i++){
if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != ":"){
return false;
}
}
if (str.length != 5)
return false;
if (str.substring(2,3) != ":" ) {
return false;
}
ls_hour = str.substring(0,2);
ls_min = str.substring(3,5);

if (parseFloat(ls_hour) > 23 ){
return false;
}
if (parseFloat(ls_min) > 59){
return false;
}
return true;
}
//检验是否为时间,格式24h:mi:ss
function CheckTime2(str){
var i;
for (i = 0; i < str.length; i++){
if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != ":"){
return false;
}
}
if (str.length != 8)
return false;
if (str.substring(2,3) != ":" ) {
return false;
}
if (str.substring(5,6) != ":" ) {
return false;
}
ls_hour = str.substring(0,2);
ls_min = str.substring(3,5);
ls_ss = str.substring(6,8);

if (parseFloat(ls_hour) > 23 ){
return false;
}
if (parseFloat(ls_min) > 59){
return false;
}
if (parseFloat(ls_ss) > 59){
return false;
}
return true;
}
//检验是否为月份,格式yyyy-MM
function CheckMonth(str){
var i;
for (i = 0; i < str.length; i++){
if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != "-"){
return false;
}
}
if (str.length != 7)
return false;
if (str.substring(4,5) != "-" ) {
return false;
}
ls_year = str.substring(0,4);
ls_month = str.substring(5,7);

if (parseFloat(ls_year) < 1900 ){
return false;
}
if (parseFloat(ls_month) > 12){
return false;
}
return true;
}

//判断控件中输入是否都为yyyy-mm-dd格式的日期,
function CheckDate(ObjName,ObjDesc) {

var ln = ObjName.value.length;
//空值看作符合格式要求
if (ln == 0 ) {
return true;
}
if (ln != 10) {
alert( ObjDesc + "只能输入如下日期格式yyyy-mm-dd!");
ObjName.focus();
return false;
}
bString = "0123456789-";
for(i = 0; i < ObjName.value.length; i ++){
if (bString.indexOf(ObjName.value.substring(i,i+1)) == -1) {
alert(ObjDesc + "日期格式只能输入数字和-!");
ObjName.focus();
return false;
}
}

var ls_year, ls_date, ls_month;

if (ObjName.value.substring(4,5) != "-" || ObjName.value.substring(7,8) != "-") {
alert(ObjDesc + "只能输入如下日期格式yyyy-mm-dd!");
ObjName.focus();
return false;
}
ls_year = ObjName.value.substring(0,4);
ls_month = ObjName.value.substring(5,7);
ls_date = ObjName.value.substring(8,10);

if (parseFloat(ls_year) > 2100 || parseFloat(ls_year) < 1900){
alert( ObjDesc + "年份不对!");
ObjName.focus();
return false;
}
if (parseFloat(ls_month) > 12 || parseFloat(ls_year) < 1){
alert(ObjDesc + "月份不对!");
return false;
}
if (parseFloat(ls_date) > 31 || parseFloat(ls_date) < 1){
alert(ObjDesc + "日期不对!");
ObjName.focus();
return false;
}
return true;
}
//判断是否符合Password格式,字母和数字组合
function CheckPassword(str){
var i
for (i = 0; i < str.length; i++){
if ((str.charAt(i) < "0" || str.charAt(i) > "9") && (str.charAt(i) < "A" || str.charAt(i) > "Z") && (str.charAt(i) < "a" || str.charAt(i) > "z")){
return false;
}
}
return true;
}
//判断是否都是字母
function CheckLetter(str){
var i
for (i = 0; i < str.length; i++){
if ( (str.charAt(i) < "A" || str.charAt(i) > "Z") && (str.charAt(i) < "a" || str.charAt(i) > "z")){
return false;
}
}
return true;
}
//判断是否都是大写字母
function CheckUpLetter(str){
var i
for (i = 0; i < str.length; i++){
if ( (str.charAt(i) < "A" || str.charAt(i) > "Z") ){
return false;
}
}
return true;
}
//判断是否都是小写字母
function CheckLowLetter(str){
var i
for (i = 0; i < str.length; i++){
if ( (str.charAt(i) < "a" || str.charAt(i) > "z")){
return false;
}
}
return true;
}

//判断是否为全部中文,当然在其他语言的系统中,如果是日文、韩文也可能,
function CheckChinese(str){
var i ;
for (var i=0;i<str.length;i++){
if (parseInt(str.charCodeAt(i)) <= 256){
return false;
}
}
return true;
}
//判断是否没有中文
function CheckNoChinese(str){
var i ;
for (var i=0;i<str.length;i++){
if (parseInt(str.charCodeAt(i)) > 256){
return false;
}
}
return true;
}

//判断是否符合Email的格式,包含@和. , @在.之前,
function CheckEmail(str){
var index_i;
var index_j;
if(str.length > 0){
index_i = str.lastIndexOf("@");

if(( index_i < 1) ){
return false;
}
index_j = str.indexOf(".", index_i);
if(( index_j < 1) ){
return false;
}

}
return true;
}

//去空格函数
String.prototype.Trim = function() {
return this.replace(/(^\s*)|(\s*$)/g, "");
}

String.prototype.LTrim = function() {
return this.replace(/(^\s*)/g, "");
}

String.prototype.RTrim = function() {
return this.replace(/(\s*$)/g, "");
}

//****************************************************************
// Description: str 为输入字符串,
// iType为类型,分别为0 - 去除前后空格; 1 - 去前导空格; 2 - 去尾部空格
//****************************************************************
function cTrim(str,iType){
var sTmpStr = ' ';
var i = -1;

if(iType == 0 || iType == 1){
while(sTmpStr == ' '){
++i;
sTmpStr = str.substr(i,1);
}
str = str.substring(i);
}

if(iType == 0 || iType == 2){
sTmpStr = ' ';
i = str.length;
while(sTmpStr == ' '){
--i;
sTmpStr = str.substr(i,1);
}
str = str.substring(0,i+1);
}
return str;
}

function isblank(s)
{
var j=0;
for(var i = 0;i < s.length;i++) {
var c = s.charAt(i);
if ((c != '') && (c != '\n') && (c != '\t') && (c != ' ')) return false;
if (c == ' ')
{
j++;
}
}
if (j == s.length) //全部是空格
{
return true;
}
else
{
return false;
}
}

function isvalid(s)
{
var j=0;
for(var i = 0;i < s.length;i++) {
var c = s.charAt(i);
if ((c == '<') || (c == '>') || (c == '\\') || (c == '/') || (c == '+') || (c == '\'')) return false;
}
return true;
}

function isNum(s)
{
for(var i = 0;i < s.length;i++) {
var v = parseFloat(s.charAt(i));
if (isNaN(v)) return false;
}
return true;
}

//拼音,数字,|组成
function CheckInputStringExt1(inputDesc,obj,isEmpty,minLength,maxLength){
var value = obj.value.Trim();
var str = /^[a-zA-Z\d|]*?$/;
if(!isEmpty && value.length > 0){
alert(inputDesc + "不能为空!");
obj.focus();
return false;
}
if(!str.exec(value)){
alert(inputDesc + "只能包含数字,字母和\"|\"!");
obj.focus();
return false;
}
if(value.length > maxLength){
alert(inputDesc + "长度不能超过" + maxLength + "个字符!");
obj.focus();
return false;
}
return true;
}

?
  相关解决方案