置顶随笔

发现为本文起一个合适的标题还不是那么容易,呵呵,所以在此先说明下本文的两个目的:
(1)介绍javascript中的eval函数的用法
(2)如何在函数内执行全局代码

►先来说eval的用法,内容比较简单,熟悉的可以跳过。
eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。
需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值,简单示例如下:

var code1='"a" + 2'; //表达式
var code2='{a:2}'; //语句
alert(eval(code1)); //->'a2'
alert(eval(code2)); //->undefined
alert(eval('(' + code2 + ')')); //->[object Object]
可以看到,对于对象声明语句来说,仅仅是执行,并不能返回值。为了返回常用的“{}”这样的对象声明语句,必须用括号括住,以将其转换为表达式,才能返回其值。这也是使用JSON来进行Ajax开发的基本原理之一。在例子中可以清楚的看到,第二个alert语句输出的是undefined,而第三个加了括号后输出的是语句表示的对象。

►现在来说本文的重点,如何在函数内执行全局代码。为了说明这个问题,先看一个例子:

var s='global'; //定义一个全局变量
function demo1(){
eval('var s="local"');
}
demo1();
alert(s); //->global
很好理解,上面的demo1函数等价于:function demo1(){var s='local';},其中定义了一个局部变量s。
所以最后的输出是global并不是什么奇怪的事情,毕竟大家都能很清楚的区分局部变量和全局变量。
仔细体会一下,可以发现eval函数的特点,它总是在调用它的上下文变量空间(也称为:包,closure)内执行,无论是变量定义还是函数定义都是如此,所以如下的代码会产生函数未定义的错误:

var s='function test(){return 1;}'; //一个函数定义语句
function demo2(){
eval(s);
}
demo2();
alert(test()); //->error:test is not defined
这是因为test函数在局部空间定义,demo2函数内可以访问到,外面就访问不到了。

而在实际的Ajax开发中,有时我们需要从服务器动态获取代码来执行,以减轻一次载入代码过多的问题,或者是一些代码是通过Javascript自身生成的,希望用eval函数来使其执行。
但这样的动态获取代码的工作一般在函数内完成,比如:

function loadCode(){
var code=getCode();
eval(code);
}
可见eval不可能在全局空间内执行,这就给开发带来了不少问题,也看到过很多人为此郁闷。

不过现在偶终于找到了解决办法,嘿嘿,可以同时兼容IE和Firefox,方法如下:

var X2={} //my namespace:)
X2.Eval=function(code){
if(!!(window.attachEvent && !window.opera)){
//ie
execScript(code);
}else{
//not ie
window.eval(code);
}
}
现在如果要想在函数内定义全局代码,就可以通过调用X2.Eval(code)方法,一个例子如下:

var s='global';
function demo3(){
X2.Eval('var s="local"');
}
demo3();
alert(s); //->'local'
可见,在demo3函数内重新定义了全局变量s="local"。
需要注意的是X2.Eval并不返回值,如果要进行表达式的求值,还是用系统的eval函数。X2.Eval设计为仅做全局代码定义用。

其实看到这里,或许有人感觉问题也太容易解决了点,呵呵,但发现这个办法倒是需要些运气和技巧的:
(1)对于IE浏览器,默认已经提供了这样的函数:execScript,用于在全局空间执行代码,只是知道的人还不多。
(2)对于Firefox浏览器,直接调用eval函数,则在调用者的空间执行;如果调用window.eval则在全局空间执行。这个知道的人估计就更少了。毕竟alert(eval==window.eval)返回true!

Firefox的eval函数的特点的确是很令人奇怪的,但从javascript规范中倒也能找到其来源:

If value of the eval property is used in any way other than a direct call (that is, other than by the explicit use of its
name as an Identifier which is the MemberExpression in a CallExpression), or if the eval property is assigned to,
an EvalError exception may be thrown.
意思大概就是说eval函数的执行是和调用者相关的,但并没有说其执行上下文的问题。所以IE和Firefox孰是孰非也就很难说了,大家知道解决办法就好。

posted @ 2008-05-09 19:14 李光耀 阅读(1239) | 评论 (13)编辑


2008年5月9日

发现为本文起一个合适的标题还不是那么容易,呵呵,所以在此先说明下本文的两个目的:
(1)介绍javascript中的eval函数的用法
(2)如何在函数内执行全局代码

►先来说eval的用法,内容比较简单,熟悉的可以跳过。
eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。
需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值,简单示例如下:

var code1='"a" + 2'; //表达式
var code2='{a:2}'; //语句
alert(eval(code1)); //->'a2'
alert(eval(code2)); //->undefined
alert(eval('(' + code2 + ')')); //->[object Object]
可以看到,对于对象声明语句来说,仅仅是执行,并不能返回值。为了返回常用的“{}”这样的对象声明语句,必须用括号括住,以将其转换为表达式,才能返回其值。这也是使用JSON来进行Ajax开发的基本原理之一。在例子中可以清楚的看到,第二个alert语句输出的是undefined,而第三个加了括号后输出的是语句表示的对象。

►现在来说本文的重点,如何在函数内执行全局代码。为了说明这个问题,先看一个例子:

var s='global'; //定义一个全局变量
function demo1(){
eval('var s="local"');
}
demo1();
alert(s); //->global
很好理解,上面的demo1函数等价于:function demo1(){var s='local';},其中定义了一个局部变量s。
所以最后的输出是global并不是什么奇怪的事情,毕竟大家都能很清楚的区分局部变量和全局变量。
仔细体会一下,可以发现eval函数的特点,它总是在调用它的上下文变量空间(也称为:包,closure)内执行,无论是变量定义还是函数定义都是如此,所以如下的代码会产生函数未定义的错误:

var s='function test(){return 1;}'; //一个函数定义语句
function demo2(){
eval(s);
}
demo2();
alert(test()); //->error:test is not defined
这是因为test函数在局部空间定义,demo2函数内可以访问到,外面就访问不到了。

而在实际的Ajax开发中,有时我们需要从服务器动态获取代码来执行,以减轻一次载入代码过多的问题,或者是一些代码是通过Javascript自身生成的,希望用eval函数来使其执行。
但这样的动态获取代码的工作一般在函数内完成,比如:

function loadCode(){
var code=getCode();
eval(code);
}
可见eval不可能在全局空间内执行,这就给开发带来了不少问题,也看到过很多人为此郁闷。

不过现在偶终于找到了解决办法,嘿嘿,可以同时兼容IE和Firefox,方法如下:

var X2={} //my namespace:)
X2.Eval=function(code){
if(!!(window.attachEvent && !window.opera)){
//ie
execScript(code);
}else{
//not ie
window.eval(code);
}
}
现在如果要想在函数内定义全局代码,就可以通过调用X2.Eval(code)方法,一个例子如下:

var s='global';
function demo3(){
X2.Eval('var s="local"');
}
demo3();
alert(s); //->'local'
可见,在demo3函数内重新定义了全局变量s="local"。
需要注意的是X2.Eval并不返回值,如果要进行表达式的求值,还是用系统的eval函数。X2.Eval设计为仅做全局代码定义用。

其实看到这里,或许有人感觉问题也太容易解决了点,呵呵,但发现这个办法倒是需要些运气和技巧的:
(1)对于IE浏览器,默认已经提供了这样的函数:execScript,用于在全局空间执行代码,只是知道的人还不多。
(2)对于Firefox浏览器,直接调用eval函数,则在调用者的空间执行;如果调用window.eval则在全局空间执行。这个知道的人估计就更少了。毕竟alert(eval==window.eval)返回true!

Firefox的eval函数的特点的确是很令人奇怪的,但从javascript规范中倒也能找到其来源:

If value of the eval property is used in any way other than a direct call (that is, other than by the explicit use of its
name as an Identifier which is the MemberExpression in a CallExpression), or if the eval property is assigned to,
an EvalError exception may be thrown.
意思大概就是说eval函数的执行是和调用者相关的,但并没有说其执行上下文的问题。所以IE和Firefox孰是孰非也就很难说了,大家知道解决办法就好。

posted @ 2008-05-09 19:14 李光耀 阅读(1239) | 评论 (13)编辑


2007年9月21日

public static string NoHTML(string Htmlstring)
    {
        //删除脚本
        Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
        //删除HTML
        Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
        Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);

        Htmlstring.Replace("<", "");
        Htmlstring.Replace(">", "");
        Htmlstring.Replace("\r\n", "");
        Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();

        return Htmlstring;
    }

posted @ 2007-09-21 14:33 李光耀 阅读(75) | 评论 (0)编辑


2007年8月11日

 

//檢查空串

function isEmpty(str){

 if((str == null)||(str.length == 0)) return (true);

 else return(false);

}

 

//檢查是否未數字

function isDigit(theNum){  

var theMask = "0123456789";

if (isEmpty(theNum)) return(false);

else if(theMask.indexOf(theNum) == -1) return(false);

return(true);

}

 

//去掉左空格

function trimLeft(str){

if(str.charAt(0) == " "){

str = str.slice(1);

str = trimLeft(str);

}

 return str;

}

 

//去掉右空格

function trimRight(str){

if(str.charAt( str.length - 1 ) == " "){

str = str.slice(0,str.length - 1);

str = trimRight(str);

}

 return str;

}

 

//去掉左右空格

function trim(str){

return trimLeft(trimRight(str));

}

 

//檢查是否是int

function isInt(str){    

if(str==""){

return (false);

}

else{

for(i=0;i<str.length;i++){

var chr = str.charAt(i);

if(!(chr>='0' && chr<='9')){

return (false);

}

}

}

return (true);

}

 

//檢查str是小數,它的整數部分不多于i位,小數部分不多于j

function isDecimalNoMsg(str,i,j){          

var dot = str.indexOf(".");

var dot_last = str.lastIndexOf(".");

var str_f = "";

var str_b = "";

if ( dot != -1 ){

str_f = str.substring(0,dot);

} else {

str_f = str;

}

 

if ( dot_last != -1 ){

str_b = str.substring(dot+1);

} else {

str_b = str;

}

 

if( isInt( str_f ) == false ){

//alert(strMsg);

return false;

} else if ( isInt( str_b ) == false ){

//alert(strMsg);

return false;

} else if ( dot != dot_last ){

//alert(strMsg);

return false;

} else if(dot==0 || dot_last==0){

//alert(strMsg);

return false;

}

 

if(str_f.length>i){

//alert(strMsg);

return false;

}

if(dot!=-1 && str_b.length>j){

//alert(strMsg);

return false;

}

return true;

}

 

//檢查日期格式Format: 99999999)

function judgeDateFormat(dateStr){

   var re,r;            

   re = /\d{8}/;

   r = dateStr.match(re);          

 return(r);                    

}

 

//檢查時間格式(Format: 999999)

function judgeTimeFormat(timeStr){

   var re,r;             

   re = /\d{6}/;

   r = timeStr.match(re);          

 return(r);

}

  

//檢查日期是否合法(Format: YYYYMMDD).

function validateDate(theStr){   

 if(theStr.length!=8){

 return (false);

 } else {

 if(theStr=="99999999")

 return (true);

 var y = theStr.substring(0,4);

 var m = theStr.substring(4,6);

 var d = theStr.substring(6,8);

 var maxDays = 31;

 if(isInt(m)==false||isInt(d)==false||isInt(y)==false){

   return(false);

 }

 else if (y.length < 4){ return(false);}

 else if (!isBetween(m,1,12)){ return(false);}

 if(m.length!=2){ return(false);}

 else if (m==4||m==6||m==9||m==11)maxDays = 30;

 else if (m==2){

   if(y%4>0)maxDays = 28;

   else if(y%100==0&&y%400>0)maxDays = 28;

   else maxDays = 29;

 }

 if(isBetween(d,1,maxDays)==false){ return(false);}

 if(d.length!=2){ return(false);}

 return(true);

 

 }

}

 

//檢查時間是否合法(Format: HHMMSS).

function validateTime(theStr){   

 if(theStr.length!=6){

 return (false);

 } else {

 if(theStr == "240000"){

 return (true);

 }

 var h = theStr.substring(0,2);

 var m = theStr.substring(2,4);

 var s = theStr.substring(4,6);

 if(isInt(h)==false||isInt(m)==false||isInt(s)==false){

   return(false);

 }

 else if (h.length < 2){ return(false);}

 else if (!isBetween(h,0,23)){ return(false);}

 else if (!isBetween(m,0,59)){ return(false);}

 else if (!isBetween(s,0,59)){ return(false);}

 return true;

 }

}

//檢查str包含漢字時最大長度不大于maxLen

function ChineseLenLimit( str, maxLen){

     var Strs = str;

     var strlength=0;

     var i;

     for ( i=0;i<str.length;i++) {

        if(str.charCodeAt(i)>=1000)

                strlength += 2;

        else

                strlength += 1;

     }

     if ( strlength > maxLen ){

     return false;

     }

     return true;

 

}

 

//檢查vallohi之間

function isBetween(val,lo,hi){

 if ((val < lo) || (val > hi)){ return(false);}

 else { return(true);}

}

 

// 檢查charC是‘0~‘9

function chkChar(charC) {

if (charC == null || charC.length == 0) {

return false;

}

if (charC == '0')return true;

if (charC == '1')return true;

if (charC == '2')return true;

if (charC == '3')return true;

if (charC == '4')return true;

if (charC == '5')return true;

if (charC == '6')return true;

if (charC == '7')return true;

if (charC == '8')return true;

if (charC == '9')return true;

return false;

}

 

// 檢查intI是正整數

function chkInt(intI) {

if (intI == null || intI.length == 0) {

return false;

}

for(var i=0;i<intI.length;i++) {

if (!chkChar(intI.charAt(i))) {

return false;

}

}

if (intI.charAt(0) == '0') {

return false;

}

return true;

}

// 檢查numN是數字

function chkNumber(numN) {

if (numN == null || numN.length == 0) {

return false;

}

for(var i=0;i<numN.length;i++) {

if (!chkChar(numN.charAt(i))) {

return false;

}

}

if (numN.length > 1 && numN.charAt(0) == '0') {

return false;

}

return true;

}

// 檢查錢數小數點后最多2

function chkAmount(amtA) {

if (amtA == null || amtA.length == 0) {

return false;

}

var amtArray = new Array();

amtArray = amtA.split(".");

if (amtArray.length > 2) {

return false;

}

if (amtArray.length == 1) {

if (!chkNumber(amtArray[0])) {

return false;

}

return true;

}

if (!chkNumber(amtArray[0])) {

return false;

}

if (amtArray[1].length > 2) {

return false;

}

for(var i=0;i<amtArray[1].length;i++) {

if (!chkChar(amtArray[1].charAt(i))) {

return false;

}

}

return true;

}

//檢查身份證

function checkAgentId(agentId){

      if (agentId.length==10){

        if (((agentId.charAt(0)=="A") && (agentId.charAt(1)=="A"))||((agentId.charAt(0)=="A") && (agentId.charAt(1)=="Z"))){

           return true;

}else{

            checknum1=((agentId.charAt(0)>="A") && (agentId.charAt(0)<="Z"));

            checknum2=((agentId.charAt(1)==1) || (agentId.charAt(1)==2));

            if (checknum2 && checknum1){

               id1 = agentId.charAt(0);

               if (id1 == 'A') {id0=1;}

               else if (id1 == 'B') { id0=10 ;}

               else if (id1 == 'C') { id0=19 ;}

               else if (id1 == 'D') { id0=28 ;}

               else if (id1 == 'E') { id0=37 ;}

               else if (id1 == 'F') { id0=46 ;}

               else if (id1 == 'G') { id0=55 ;}

               else if (id1 == 'H') { id0=64 ;}

               else if (id1 == 'I') { id0=39 ;}

               else if (id1 == 'J') { id0=73 ;}

               else if (id1 == 'K') { id0=82 ;}

               else if (id1 == 'L') { id0=2 ;}

               else if (id1 == 'M') { id0=11 ;}

               else if (id1 == 'N') { id0=20 ;}

               else if (id1 == 'O') { id0=48 ;}

               else if (id1 == 'P') { id0=29 ;}

               else if (id1 == 'Q') { id0=38 ;}

               else if (id1 == 'R') { id0=47 ;}

               else if (id1 == 'S') { id0=56 ;}

               else if (id1 == 'T') { id0=65 ;}

               else if (id1 == 'U') { id0=74 ;}

               else if (id1 == 'V') { id0=83 ;}

               else if (id1 == 'W') { id0=21 ;}

               else if (id1 == 'X') { id0=3 ;}

               else if (id1 == 'Y') { id0=12 ;}

               else if (id1 == 'Z') { id0=30 ;}

               id2 = id0 + agentId.charAt(1)*8 + agentId.charAt(2)*7 + agentId.charAt(3)*6 + agentId.charAt(4)*5 + agentId.charAt(5)*4 + agentId.charAt(6)*3 + agentId.charAt(7)*2 + agentId.charAt(8)*1 + agentId.charAt(9)*1;

               if (id2 % 10 == 0){

                  return true;

   }

            }

         }

   }

   return false;

}

 

//轉換從UTF-8 Big5 GB2312

function Unicode2Str(str){

var re=/&#[\da-fA-F]{1,5};/ig;

var arr=str.match(re);

if(arr==null)return("");

var size=arr.length;

var arr2=new Array(size);

for(var i=0;i<arr.length;i++){

arr2[i]=String.fromCharCode(arr[i].replace(/[&#;]/g,""));

}

for(var i=0;i<arr.length;i++){

str=str.replace(arr[i],arr2[i]);

}

//return(arr.toString().replace(/,/g,""))

return str;

}

 

//獲得當前客戶端時間 (Format: YYYYMMDD).

function getCurrentDate(){

var dateObj= new Date();

var dateString=dateObj.getFullYear();

if(dateObj.getMonth()<10){

dateString=dateString+'0'+dateObj.getMonth();

}else{

dateString+=dateObj.getMonth();

}

if(dateObj.getDate()<10){

dateString+='0'+dateObj.getDate();

}else{

dateString+=dateObj.getDate();

}

return dateString;

}  

 

//居中顯示彈出窗口

function PopWindowOnCenter(url,title,iwidth,iheight){

var ileft,itop;

ileft = (window.screen.width-iwidth)/2;

itop = (window.screen.height-iheight)/2;

 

window.open(url,title,'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width='+iwidth+',height='+iheight+',left='+ileft+',top='+itop);

}

 

//移動選中的成員從objFromIdselectobjToIdselect

function moveTo(objFromId,objToId){

var objFrom = document.getElementById(objFromId);

var objTo = document.getElementById(objToId);

 

var len = objFrom.length;

for(var i=len-1; i>=0; i--){

if(objFrom.options[i].selected){

var j = 0;

for(j = 0; j < objTo.length; j++){

if(objFrom.options[i].value == objTo.options[j].value){

break;

}

}

if(j == objTo.length){//the selected item is not in objTo.

objFrom.options[i].selected = false;

var option1 = objFrom.options[i];

objTo.options.add(new Option(option1.text, option1.value));

objFrom.options.remove(i);

}

objFrom = document.getElementById(objFromId);

len = objFrom.length;

}

}

}

 

//移動全部成員從objFromIdselectobjToIdselect

function moveAllTo(objFromId,objToId){

var objFrom = document.getElementById(objFromId);

var objTo = document.getElementById(objToId);

 

var len = objFrom.length;

for(var i=len-1; i>=0; i--){

var j = 0;

for(j = 0; j < objTo.length; j++){

if(objFrom.options[i].value == objTo.options[j].value){

break;

}

}

if(j == objTo.length){//the selected item is not in objTo.

var option1 = objFrom.options[i];

objTo.options.add(new Option(option1.text, option1.value));

objFrom.options.remove(i);

}

objFrom = document.getElementById(objFromId);

len = objFrom.length;

}

}

 

 

//屏蔽非數字鍵

function checkKey(){

if(event.keyCode<48 || (event.keyCode>57 && event.keyCode<96)

|| event.keyCode>105){

if(event.keyCode != 8){

event.returnValue=false;

}

}

}

 

//用與樹狀列表的顯示

function showMenu(id,ulId){

var obj = document.getElementById(id);

 

if(obj.className == ""){

obj.className = "selected";

document.getElementById(ulId).style.display = "block";

}

else{

obj.className = "";

document.getElementById(ulId).style.display = "none";

}

}

 

//檢查str中是否包含漢字

function CheckChinese( str){

     var Strs = str;

     var i;

     for ( i=0;i<str.length;i++) {

        if(str.charCodeAt(i)>=1000){

                return true;

        }

     }

     return false;

}

 

//校验是否全由数字组成

 

程序代码

function isDigit(s)

{

var patrn=/^[0-9]{1,20}$/;

if (!patrn.exec(s)) return false

return true

}

 

//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串

 

程序代码

function isRegisterUserName(s)

{

var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;

if (!patrn.exec(s)) return false

return true

}

 

//校验用户姓名:只能输入1-30个以字母开头的字串

 

程序代码

function isTrueName(s)

{

var patrn=/^[a-zA-Z]{1,30}$/;

if (!patrn.exec(s)) return false

return true

}

 

//校验密码:只能输入6-20个字母、数字、下划线

 

程序代码

function isPasswd(s)

{

var patrn=/^(w){6,20}$/;

if (!patrn.exec(s)) return false

return true

}

 

//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-

 

程序代码

function isTel(s)

{

//var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?(d){1,12})+$/;

var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$/;

if (!patrn.exec(s)) return false

return true

}

 

//校验手机号码:必须以数字开头,除数字外,可含有“-

 

程序代码

function isMobil(s)

{

var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$/;

if (!patrn.exec(s)) return false

return true

}

 

//校验邮政编码

 

程序代码

function isPostalCode(s)

{

//var patrn=/^[a-zA-Z0-9]{3,12}$/;

var patrn=/^[a-zA-Z0-9 ]{3,12}$/;

if (!patrn.exec(s)) return false

return true

}

 

//校验搜索关键字

 

程序代码

function isSearch(s)

{

var patrn=/^[^`~!@#$%^&*()+=|][]{}:;',.<>/?]{1}[^`~!@$%^&()+=|][]{}:;',.<>?]{0,19}$/;

if (!patrn.exec(s)) return false

return true

}

 

程序代码

function isIP(s) //by zergling

{

var patrn=/^[0-9.]{1,20}$/;

if (!patrn.exec(s)) return false

return true

}

 

/**

 * 功能:使指定值的指定名称的单复选框处于选中状态。

 * radioName:单选框组件名

 * val:指定值

 */

function makeRadioChecked(radioName, val) {

    var obj = document.all[radioName];

    try {

        if (obj) {

            if (obj.type == "radio" && obj.value == val) {

                obj.checked = true;

            }

            for (var i = 0; i < obj.length; i++) {

                if (obj[i].type == "radio" && obj[i].value == val) {

                    obj[i].checked = true;

                    break;

                }

            }

        }

    } catch(exception) {

        alert("error");

    }

}

 

自创javascrit分页代码。

 

function showpages(total,perpage,current,filename,seed,bShow){

//total总记录数,perpage每页记录数,current当前记录,filename文件名?page=seed中间数字两边间隔数,bshow显示中间数字页面

//

 

 

var sRet,i,startPage,endPage,totalPage

//startPage:循环开始/endPage:循环结束/totalPage:总页数

//处理URL中的空格

if (filename!=''){

filename="&"+filename;

}

 if (total % perpage==0 ){

 

 totalPage=total/perpage;

 

}else{

 

totalPage=Math.floor(total/perpage)+1;

}

 

 

 if (totalPage<=10){

startPage=1;

}else{

if ((current-seed) >0) {

startPage=current-seed;

}else{

startPage=1;

}

}

 

if (totalPage<=10) {

endPage=totalPage

}else{

if ((current+seed)<totalPage) {

endPage=current+seed

}else{

endPage=totalPage

}

}

 

if (current<seed) {

if (totalPage>10){

endPage=10

}

}

 var sRet1=""

 

 if (bShow) {

for (i=startPage;i<=endPage;i++)

{

 

if (i==current)

{

sRet1=sRet1+"<font style='background-color:#CCCC33;'><b>"+current+"</b></font> "

}

else

{

sRet1=sRet1+"<a href=?page="+i+filename+">"+i+"</a> "

}

 

}

 }

 

    sRet=""

    //sRet=sRet+"<form name=jumpPage mothod=post action= >"

sRet=sRet+"<font class=tcat2>"+total+","

    sRet=sRet+""+current+"/"+ totalPage+", "

sRet=sRet+"<a href=?page=1"+ filename+">第一页</a> "

if ((current==1)&&(current!=totalPage)){

 

 

sRet=sRet+" 上一页 "+sRet1+" <a href=?page="+(current+1) +filename+">下一页</a>"

}else{

if (current>1) {

 

if (current<totalPage) {

sRet=sRet+" <a href=?page="+(current-1)+filename+">上一页</a> "+sRet1+" <a href=?page="+(current+1)+filename+">下一页</a>"

}else{

if (current==totalPage) {

sRet=sRet+" <a href=?page="+(current-1)+filename+">上一页</a> "+sRet1+" 下一页"

 

}

    }

}else{

sRet=sRet+" 上一页 "+sRet1+" 下一页"

}

}

sRet=sRet+" <a href=?page="+ totalPage+filename+">最末页</a>"

//sRet=sRet+"<input type=hidden name=wheretogo value=go>&nbsp;"

//sRet=sRet+"<input type=hidden name=maxpage value="+totalPage+">"

sRet=sRet+" 跳转到<input name=currentPage class=border1px size=3 onkeydown=if((event.keyCode==13)&&(this.value!='')&&(this.value!=0)&&(this.value<"+(totalPage+1)+"))window.location='?page='+this.value+'"+filename+"'; onkeyup=if(isNaN(this.value))this.value=''; > "

//sRet=sRet+"<input type=button value=GO class=border1px onclick=jump('"+filename+"');>&nbsp;"

 

sRet=sRet+"</font>"

//sRet=sRet+"</form>"

//alert(sRet);

document.write(sRet)

 

}

 

检查有没有空格

if(aa.indexOf(" ")>=0){

   alert("aa中不允许含有空格!!");

   document.myForm.aa.focus();

   return false;

}

posted @ 2007-08-11 12:31 李光耀 阅读(74) | 评论 (0)编辑


2007年8月5日

     摘要: 本节我参考官方网站上的Quick Start Guide,网址:http://opensource2.atlassian.com/confluence/oss/display/IBATIS/Quick+Start+Guide 我会跟着该例子创建一个实例代码. 补充以下,IBatisNet包括两个部分Data Mapper和DataAccess,这个实例主要针对 Data Mapper的. 1...  阅读全文

posted @ 2007-08-05 23:06 李光耀 阅读(29) | 评论 (0)编辑


posts - 4, comments - 13, trackbacks - 0, articles - 4

Copyright © 李光耀