2008年8月30日星期六

Javascript 函数


  1. 检测输入框不能为空

  2. 将一个变量转换为对象

  3. 判断是否大于某个数

  4. 判断是否小于某个数

  5. 判断是否是数字

  6. 判断是否是价格

  7. 判断是否是空

  8. 判断是否是空格

  9. 取得焦点

  10. 判断是否是整数

  11. 判断是否是日期

  12. 判断是否有有效数据被选中

  13. 检查是否是字符

  14. 检查是否是其它可以作名称的字符

  15. 检查是否是密码

  16. 检查是否是email

  17. 检查是否是邮编

  18. 检查是否是数字字符串

  19. 去掉字符串两边空格

  20. 判断一个字符串是否由数字(int or long)组成

  21. 判断一个字符串是否由数字(int or long or float)组成

  22. 判断一个字符串是否由数字或 '-','*' 组成

  23. 比较两个日期的大小

  24. 去掉字符串所有空格

  25. 转化日期

  26. 取得每月天数的函数

  27. 判断字符串由字符串和数字组成

  28. 判断一个字符串是否是由数字和"-"组成

  29. 弹出对话框



检测输入框不能为空

[js]
function doinputconnotempty(txtinput, minlength, salert){
txtinput.value = trim(txtinput.value);
var m_isvalid = true;
if(isempty(txtinput.value)) m_isvalid=false;
if(minlength > 0){
if(txtinput.value.length < minlength) m_isvalid=false;
}
if(!m_isvalid){
if(salert!="") window.alert(salert);
txtinput.focus();
}
return m_isvalid;
}
[/js]

将一个变量转换为对象

[js]
function var_to_obj(val) {
this.value=val;
}
[/js]
判断是否大于某个数

[js]
function is_greater(field,crit,limit) {
var ret = (is_numeric(field,-1) ) ? (field.value > limit ) : false;
if (!ret)
docritcode(field,crit,"value must be greater than "+limit);
return(ret);
}
[/js]

判断是否小于某个数

[js]
function is_less(field,crit,limit) {
var ret = (is_numeric(field,-1) ) ? (field.value < limit ) : false;
if (!ret)
docritcode(field,crit,"value must be less than "+limit);
return(ret);
}
[/js]

判断是否是数字

[js]
function is_numeric(field,crit,msg) {
var ret = true;
var numstr="0123456789";
var decused=false;
var chr;
for (i = 0;i < field.value.length; ++i ) {
chr=field.value.charat(i);
if (numstr.indexof(chr,0)==-1) {
if ( (!decused) && chr==".") {
decused=true;
} else {
ret=false;
}
}
}
if (!ret)
docritcode(field,crit,msg);
return(ret);
}
[/js]

判断是否是价格

[js]
function is_price(field,crit,msg) {
var ret = true;
var numstr="0123456789";
var decused=false;
var chr;
for (i=0;i < field.value.length; ++i) {
chr=field.value.charat(i);
if (numstr.indexof(chr,0) == -1) {
if ( (!decused) && chr==".") {
decused=true;
} else {
ret=false;
}
}
}
if(ret) {
if(decused&&(field.value.length-field.value.indexof('.') < 4));
else if(decused)
ret=false;
}
if (!ret)
docritcode(field,crit,msg);
return(ret);
}
[/js]

判断是否是空

[js]
function is_null(field,crit,msg) {
var text=""+ trim(field.value);
if(text.length) {
for(var i = 0;i < text.length; i++)
if(text.charat(i)!=" "&&text.charat(i)!=" ")
break;
if(i>=text.length) {
ret=true;
} else {
ret=false;
}
} else
ret=true;

if (ret)
docritcode(field,crit,msg);
return(ret);
}
[/js]

判断是否是空格

[js]
function isspace(field) {
var text=""+field.value;
if(text.length) {
for(var i = 0;i < text.length; i++ )
if ( text.charat(i) != " " && text.charat(i) != " ")
break;
if( i > = text.length)
field.value="";
}
}
[/js]

取得焦点

[js]
function docritcode(field,crit,msg) {
if ( (-1!=crit) ) {
alert(msg)
if (crit==1) {
field.focus(); // focus does not work on certain netscape versions
field.select();
}
}
}
[/js]

判断是否是整数

[js]
function is_int(field,crit,msg){
var ret = true;
var numstr="0123456789";
var chr;
if (field.value.length==0){
ret=false;
}
for (i = 0;i < field.value.length; ++i) {
chr=field.value.charat(i);
if (numstr.indexof(chr,0)==-1){
ret=false;
}
}
if (!ret)
docritcode(field,crit,msg);
return(ret);
}
[/js]

判断是否是日期

[js]
function is_date(field,crit,msg) {
var ret = false;
var mark1;
var mark2;
var days;
var y;
var m;
var d;
if(field.value=="")
return true;
cd=new date();

if ( (mark1 = field.value.indexof('-'))==-1)
mark1=field.value.indexof('-');

if (mark1 > -1) {
if ( (mark2 = field.value.indexof('-',mark1+1)) ==-1)
mark2=field.value.indexof('-',mark1+1);
if ((mark2 > -1)&&(mark2+1 < field.value.length) ) {
y = parseint(field.value.substring(0,mark1),10);
m = parseint(field.value.substring(mark1+1,mark2),10);
d = parseint(field.value.substring(mark2+1,field.value.length),10);

year = new var_to_obj(y);
month = new var_to_obj(m);
day = new var_to_obj(d);
days = getdaysinmonth(month.value,year.value) + 1;

if (
(is_greater(day,-1,0))&&(is_less(day,-1,days))&&
(is_greater(month,-1,0))&&(is_less(month,-1,13))&&
(is_greater(year,-1,1900))&&(is_less(year,-1,2500))
)
ret=true;
}
}
if (!ret) docritcode(field,crit,msg);

return(ret);
}
[/js]

判断是否有有效数据被选中

[js]
function isselected(field,crit,msg) {
value=""+field.options[field.selectedindex].value;
if(value=="0")
ret=false;
else
ret=true;
if (!ret)
docrit(field,crit,msg);
return(ret);
}
[/js]

检查是否是字符

[js]
function ischaracter( ccharacter ) {
var sformat = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";

if( sformat.indexof( ccharacter, 0 ) == -1 ) {
return false;
}

return true;
}
[/js]

判断是否是数字和字母的组合

[js]
function ischrandnum( ccharacter ) {
for(ilen=0;ilen < str.length; ilen++) {
if(str.charat(ilen) < '0' || str.charat(ilen) > '9' ) {
if(str.charat(ilen) < 'a' || str.charat(ilen) > 'z' ) {
if(str.charat(ilen) < 'a' || str.charat(ilen) > 'z' )
return false;
}
}
}
return true;
}
[/js]

检查是否是其它可以作名称的字符

[js]
function isothernamecharacter( ccharacter ){
var sformat = "_";

if( sformat.indexof( ccharacter, 0 ) == -1 ) {
return false;
}

return true;
}

function isothernamecharacter1( ccharacter ) {
var sformat = "-";

if( sformat.indexof( ccharacter, 0 ) == -1 ) {
return false;
}

return true;
}

function isothernamecharacter2( ccharacter ) {
var sformat = ".";

if( sformat.indexof( ccharacter, 0 ) == -1 ){
return false;
}

return true;
}

// 检查是否是可以作名称的字符
// svalue: 输入值
function isnamecharacter( svalue ) {
if( svalue == null ) {
return false;
}

for( i = 0; i < svalue.length; i ++ ) {
var ccharacter = svalue.charat( i );
if( isdigital( ccharacter ) == false && ischaracter( ccharacter ) == false && isothernamecharacter( ccharacter ) == false&& isothernamecharacter1( ccharacter ) == false&& isothernamecharacter2( ccharacter ) == false ) {
return false;
}
}

return true;
}
[/js]

检查是否是密码

[js]
function ispassword( svalue ) {
if( svalue == null ) {
return false;
}

for( i = 0; i < svalue.length; i ++ ) {
var ccharacter = svalue.charat( i );
if( isdigital( ccharacter ) == false && ischaracter( ccharacter ) == false && isothernamecharacter( ccharacter ) == false) {
return false;
}
}

return true;
}
[/js]

检查是否是email

[js]
// svalue: 输入值, 合法格式为a@b.c.d此类形式
function isemail( svalue ) {
var ifirstindex = 0;
var isecondindex = svalue.indexof( '@' );
if( isecondindex == -1 ){
return false;
}

var stemp = svalue.substring( ifirstindex, isecondindex );
if( isnamecharacter( stemp ) == false ) {
return false;
}

isecondindex = svalue.indexof( '.' );
if( isecondindex == -1 || svalue.substring( svalue.length-1, svalue.length ) == '.' ) {
return false;
} else if( stemp.length == svalue.length - 2 ) {
// the last two characters are '@' and '.'
return false;
} else{
var stempvalue = svalue;
isecondindex = svalue.indexof( '@' );
while( isecondindex != -1 ) {
ifirstindex = isecondindex + 1;
stempvalue = stempvalue.substring( ifirstindex, stempvalue.length ); // the right section of value
isecondindex = stempvalue.indexof( '.' );
//document.write( "stempvalue=" + stempvalue + "<br>" );
stemp = stempvalue.substring( 0, isecondindex );
//document.write( "stemp=" + stemp + "<br>" );
if( isnamecharacter( stemp ) == false ) {
return false;
}
}

if( isnamecharacter( stempvalue ) == false ){
return false;
}
}

return true;
}
[/js]

检查是否是邮编

[js]
// svalue: 输入值, 合法格式为六位整数
function iszip( svalue ) {
if( svalue == null ) {
return false;
}

if( svalue.length != 6 ) {
return false;
} else {
for( i = 0; i < 6; i ++ ) {
if( isdigital( svalue.charat( i ) ) == false ) {
return false;
}
}
}

return true;
}
[/js]

检查是否是数字字符串

[js]
// svalue: 输入值
function isdigitalstring( svalue ) {
if( svalue == null ) {
return false;
}

for( i = 0; i < svalue.length; i ++ ) {
if( isdigital( svalue.charat( i ) ) == false ) {
return false;
}
}
}
[/js]

判断一个字符串是否为空

[js]
function isempty(his) {
flag = true;
for(var i=0;i < his.length;i++) {
if(his.charat(i)!=" ") {
flag = false;
break;
}
}
return flag;
}
[/js]

去掉字符串两边空格

[js]
function trim(his) {
//找到字符串开始位置
pos_start = -1;
for(var i=0;i < his.length;i++) {
if(his.charat(i)!=" ") {
pos_start = i;
break;
}
}
//找到字符串结束位置
pos_end = -1;
for(var i=his.length-1;i>=0;i--) {
if(his.charat(i)!=" "){
pos_end = i;
break;
}
}
//返回的字符串
str_return = ""
if(pos_start!=-1 && pos_end!=-1){
for(var i=pos_start;i<=pos_end;i++) {
str_return = str_return + his.charat(i);
}
}
return str_return;
}
[/js]

判断一个字符串是否由数字(int or long)组成

[js]
function isdigital(str) {
for(ilen=0;ilen < str.length;ilen++) {
if(str.charat(ilen) < '0' || str.charat(ilen) > '9' ) {
return false;
}
}
return true;
}
[/js]

判断一个字符串是否由数字(int or long or float)组成

[js]
function isfloat(str) {
flag_dec = 0
for(ilen=0;ilen < str.length;ilen++) {
if(str.charat(ilen) == '.') {
flag_dec++;
if(flag_dec > 1)
return false;
else
continue;
}
if(str.charat(ilen) < '0' || str.charat(ilen) > '9' ) {
return false;
}
}
return true;
}
[/js]

判断一个字符串是否由数字或'-','*'组成

[js]
function istelephone(str) {
for(ilen=0;ilen < str.length;ilen++){
if(str.charat(ilen) < '0' || str.charat(ilen) > '9' ){
if((str.charat(ilen)!='-')&&(str.charat(ilen)!='*'))
return false;
}
}
return true;
}
[/js]

比较两个日期的大小

[js]
//num1>num2 return:true;num1<=num2 return:false
function compare_date(num1,num2) {
var pos1,pos2,end;
var para1,para2,para3,para4,para5,para6;

//para1:年
//para2:月
//para3:日
end=num1.length;
pos1=num1.indexof("-",0);
pos2=num1.indexof("-",pos1+1);
para1=num1.substring(0,pos1);
para2=num1.substring(pos1+1,pos2);
para3=num1.substring(pos2+1,end);
para1=parseint(para1,10);
para2=parseint(para2,10);
para3=parseint(para3,10);
end=num2.length;
pos1=num2.indexof("-",0);
pos2=num2.indexof("-",pos1+1);
para4=num2.substring(0,pos1);
para5=num2.substring(pos1+1,pos2);
para6=num2.substring(pos2+1,end);
para4=parseint(para4,10);
para5=parseint(para5,10);
para6=parseint(para6,10);
if(para1>para4) {
return true;
} else if(para1==para4) {
if(para2>para5) {
return true;
} else if(para2==para5) {
if(para3>para6) {
return true;
}
}
}
return false;
}
[/js]

去掉字符串所有空格

[js]
function jtrimstr(str) {
var i=0;
var j;
var len=str.length;
trimstr="";
while(i < len) {
if(str.charat(i)!=" ") {
trimstr=trimstr+str.charat(i);
}
i++;
}
return(trimstr);
}
[/js]

转化日期

[js]
function transferdate(str) {
var m=4;
var strlen=str.length
var n=strlen-1;
while (n>=strlen-2) {
if(str.charat(n)=="-") {
break;
}
n=n-1
}
trimstr=str.substring(m+1,n)+"/"+ str.substring(n+1,strlen)+"/"+str.substring(0,m)
return(trimstr)
}
[/js]

取得每月天数的函数

[js]
//1.取得每月天数的函数
//参数说明: month--月;year--年
// 返回值: days--天数
function getdaysinmonth(month,year) {
var days;
if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) days=31;
else if (month==4 || month==6 || month==9 || month==11) days=30;
else if (month==2) {
if (isleapyear(year)) { days=29; }
else { days=28; }
}
return (days);
}
//2.判断是否为润年的函数
//参数说明: year -- 年份
// 返回值: 如果是润年, 返回true; 否则返回false.

function isleapyear (year) {
if (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0)) {
return (true);
} else {
return (false);
}
}
[/js]


判断字符串由字符串和数字组成

[js]
function ischarsf(str) {
for(ilen=0;ilen < str.length;ilen++) {
if(str.charat(ilen) < '0' || str.charat(ilen) > '9' ) {
if(str.charat(ilen) < 'a' || str.charat(ilen) > 'z' )
return false;
}
}
return true;
}
[/js]

判断一个字符串是否是由数字和"-"组成

[js]
function ismonth(str) {
for(ilen=0;ilen < str.length;ilen++){
if(str.charat(ilen) < '0' || str.charat(ilen) > '9' ) {
if((str.charat(ilen)!='-'))
return false;
}
}
return true;
}
[/js]

弹出对话框

[js]
function popmodaldialog(url,args,height,width){
return window.showmodaldialog(url,args,"dialogheight:"+height+"px;dialogwidth:"+width+"px;center:yes;help:no;resizable:no;status:no;");
}
[/js]

2008年8月9日星期六

header 常用指令

header 分为三部分:

  • 第一部分为HTTP协议的版本(HTTP-Version)

  • 第二部分为状态代码(Status)

  • 第三部分为原因短语(Reason-Phrase)




fix 404 pages: 用这个 header 指令来解决 URL 重写产生的 404 header
[php]
header('HTTP/1.1 200 OK');
[/php]

set 404 header: 页面没找到
[php]
header('HTTP/1.1 404 Not Found');
[/php]

set Moved Permanently header (good for redrictions), use with location heade : 页面被永久删除,可以告诉搜索引擎更新它们的 urls
[php]
header('HTTP/1.1 301 Moved Permanently');
[/php]

访问受限
[php]
header('HTTP/1.1 403 Forbidden');
[/php]

服务器错误
[php]
header('HTTP/1.1 500 Internal Server Error');
[/php]

redirect to a new location: 重定向到一个新的位置
[php]
header('Location: http://www.google.com);
[/php]


redrict with delay: 延迟一段时间后重定向
[php]
header('Refresh: 10; url=http://www.sina.com.cn');
print 'You will be redirected in 10 seconds';
[/php]


override X-Powered-By: PHP: 覆盖 X-Powered-By value
[php]
header('X-Powered-By: PHP/4.4.0');
[/php]


content language (en = English): 内容语言 (en = English)
[php]
header('Content-language: en');
[/php]

last modified (good for caching): 最后修改时间 (在缓存的时候可以用到)
[php]
$time = time() - 60; // or filemtime($fn), etc
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');
[/php]

header for telling the browser that the content did not get changed: 告诉浏览器要获取的内容还没有更新
[php]
header('HTTP/1.1 304 Not Modified');
[/php]

set content length (good for caching): 设置内容的长度 (缓存的时候可以用到):
[php]
header('Content-Length: 1234');
[/php]

headers for an download: 用来下载文件
[php]
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="example.zip"');
header('Content-Transfer-Encoding: binary');
[/php]


disable caching of the current document: 禁止缓存当前文档
[php]
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
[/php]


设置内容类型
[php]
header('Content-Type: text/html; charset=utf-8');
[/php]


plain text file
[php]
header('Content-Type: text/plain');
[/php]

JPG picture
[php]
header('Content-Type: image/jpeg');
[/php]

ZIP file
[php]
header('Content-Type: application/zip');
[/php]

PDF file
[php]
header('Content-Type: application/pdf');
[/php]

Audio MPEG (MP3,...) file
[php]
header('Content-Type: audio/mpeg');
[/php]

Flash animation
[php]
header('Content-Type: application/x-shockwave-flash');
[/php]

显示登录对话框,可以用来进行 HTTP 认证
[php]
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
print 'Text that will be displayed if the user hits cancel or enters wrong login';
[/php]

表单填写时,可用 AJAX 对用户随时进行验证、提示,但是在用户没有留意 AJAX 提交了错误表单的提示信息时, ,跳回原页,而填写的信息全部丢失。要支持页面回跳,有以下的办法:

  • 使用 session_cache_limiter 方法: session_cache_limiter('private,must-revalidate');,但是要值得注意的是 session_cache_limiter() 方法要写在 session_start() 方法之前才有用。

  • 用header来设置控制缓存的方法: header('Cache-control:private,must-revalidate')