JS判断是否为数字、JS判断是否为整数、JS判断是否为浮点数

作者:Tosh 2009年03月12日

最简单的方法:
取整后判断是否和原值相等!

javascript的取整函数是:parseInt

if(parseInt(value)==value)
{

//整数!
}

 

//正则表达式方法
function checkRate(input)
{
     var re = /^[0-9]+.?[0-9]*$/;   //判断字符串是否为数字     //判断正整数 /^[1-9]+[0-9]*]*$/  

     if (!re.test(input.rate.value))
    {
        alert("请输入数字(例:0.02)");
        input.rate.focus();
        return false;
     }
}

下面为普通函数写法

function BASEisNotNum(theNum)
{
//判断是否为数字
if (BASEtrim(theNum)=="")
return true;
for(var i=0;i<theNum.length;i++){
oneNum=theNum.substring(i,i+1);
if (oneNum<"0" || oneNum>"9")
return true;
}
return false;
}

function BASEisNotInt(theInt)
{
//判断是否为整数
theInt=BASEtrim(theInt);
if ((theInt.length>1 && theInt.substring(0,1)=="0") || BASEisNotNum(theInt)){
return true;
}
return false;
}

function BASEisNotFloat(theFloat)
{
//判断是否为浮点数
len=theFloat.length;
dotNum=0;
if (len==0)
return true;
for(var i=0;i<len;i++){
oneNum=theFloat.substring(i,i+1);
if (oneNum==".")
dotNum++;
if ( ((oneNum<"0" || oneNum>"9") && oneNum!=".") || dotNum>1)
return true;
}
if (len>1 && theFloat.substring(0,1)=="0"){
if (theFloat.substring(1,2)!=".")
return true;
}
return false;}

标签:

Web技术

文字闪光效果

作者:Tosh 2009年02月19日

<span style="filter:glow(color=#0000FF,strength=2);height:0px;color:#FFFFFF">闪光文字</span>

标签:

Web技术

ASP.NET 页面离开事件

作者:Tosh 2009年02月19日
<body MS_POSITIONING="GridLayout" onbeforeunload='__doPostBack("LinkButton1","")'>
在LinkButton1.Click中
private void LinkButton1_Click(object sender, System.EventArgs e)
{
Clear();
}

source:  http://hi.baidu.com/heiru/blog/item/0bb691456efef23b86947354.html

标签:

Web技术

onbeforeunload与onunload事件

作者:Tosh 2009年02月15日
Onunload,onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过window.onunload来指定或者在<body>里指定。区别在于onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。

  Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。Onunload是无法阻止页面的更新和关闭的。而 Onbeforeunload 可以做到。

1、onbeforeunload事件:
  说明:目前三大主流浏览器中firefox和IE都支持onbeforeunload事件,opera尚未支持。
  用法:
   ·object.onbeforeunload = handler
   ·<element onbeforeunload = “handler” … ></element>
  描述:
   事件触发的时候弹出一个有确定和取消的对话框,确定则离开页面,取消则继续待在本页。handler可以设一个返回值作为该对话框的显示文本。

  触发于:
   ·关闭浏览器窗口
   ·通过地址栏或收藏夹前往其他页面的时候
   ·点击返回,前进,刷新,主页其中一个的时候
   ·点击 一个前往其他页面的url连接的时候
   ·调用以下任意一个事件的时候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
   ·当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。
   ·重新赋予location.href的值的时候。
   ·通过input type=”submit”按钮提交一个具有指定action的表单的时候。
  可以用在以下元素:
   ·BODY, FRAMESET, window
  平台支持:
   IE4+/Win, Mozilla 1.7a+, Netscape 7.2+, Firefox0.9+
  示例:
   <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
   <title>onbeforeunload测试</title>
   <script>
   function checkLeave(){
        event.returnValue="确定离开当前页面吗?";
   }
   </script>
   </head>
   <body onbeforeunload="checkLeave()">
   </body>
   </html>

2、onunload事件
  用法:
   ·object.onbeforeunload = handler
   ·<element onbeforeunload = "handler"></element>

  描述:
   当用户关闭一个页面时触发 onunload 事件。

  触发于:
   ·关闭浏览器窗口
   ·通过地址栏或收藏夹前往其他页面的时候
   ·点击返回,前进,刷新,主页其中一个的时候
   ·点击 一个前往其他页面的url连接的时候
   ·调用以下任意一个事件的时候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
   ·当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。
   ·重新赋予location.href的值的时候。
   ·通过input type=”submit”按钮提交一个具有指定action的表单的时候。
  示例:
   <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
   <title>onunload测试</title>
   <script>
   function checkLeave(){
        alert("欢迎下次再来!");
   }
   </script>
   </head>
   <body onunload="checkLeave()">
   </body>
   </html>

标签:

Web技术

javascript事件集合(包有触发事件)

作者:Tosh 2009年02月15日

1.单击事件___onclick

用户单击鼠标按键时产生的事件.同时onclick指定的事件处理程序或代码将被调用执行.

如:<input type="button" value="打开页面" onlick="window.open

('xxxx.html','newwindow','width=456,height=230,toolbar=no,menubar=no,scrollbars=yes');

">

2.改变事件___onchange
当text或textarea元素内的字符值改变或select表格选项状态改变里发生该事件.
如;<textarea name="liuyan" rows=5 cols=70 value=" " onchange=alert("您在文本框中添加了新的内容")>

3.选中事件____onselect
当text或textarea对象中的文字被选中里会引发该事件
如:<ipnut type="text" value="默认信息" onselect=alert("您选中了文本框中的文字")>

4.获得焦点事件____onfocus
用户单击text或textarea以及select对象时,即光标落在文本框或选择框时会产生该事件.
如:<select name="zhengjian" onfocus="alert("我成为焦点")>

5.失去焦点事件______onblur
失去焦点事件正好与获得焦点事件相对,当text对象,textarea对象或select对象不再拥有焦点而退出后台时,引发该事件.

6.载入文件事件____onload
当页面文件载入时,产生该事件.onload的一个作用就是在首次载入一个页面文件时检测cookie的值,并用一个变量为其赋值,使它可以被源代码使用,本事件是window的事件,但是在HTML中指定事件处理程序时,一般把它写在<body>标记中.
如:<body onload=alert("正在加载页面,请等待...")>

7.卸载文件事件____onunload
与载入文件事件onload正好相反,当web页面退出时引发的事件,并可更新cookie的状态
如:<body onunload="confirm("你确定要离开本页?")>

8.鼠标覆盖事件 _____onmouseover
onmouseover是当鼠标位于元素上方时所引发的事件
如:<input type="boutton" value="按钮" onmouseover="window.status='请您注意下面的状态栏'; return true">

9.鼠标离开事件_____onmouseout
onmouseout是鼠标离开元素里引发的事件.如果和鼠标覆盖事件同时使用,可以创建动态按钮的效果.

10.一般事件
ondbclick          鼠标双击事件
鼠标上的按键被按下时激活的事件
鼠标按下后,松开鼠标时触发的事件
鼠标移动里触发的事件.
onkeypress       当键盘上的某个键被按下并且释放时触发的事件,要求页面内必须有激活对象
onkeydown       当键盘上某个键被按下时触发的事件,要求页面内必须有激活对象
onkeyup            当键盘上某个按键被放开时触发的事件,要求页面内必须有激活对象

11.页面相关事件
onabort   图片在下载时被用户中断
onbeforeunload   当前页面的内容将要被改变时触发的事件
onerror        捕捉当前页面因为某种原因而出现的错误,如脚本错误.
onmove       浏览器的窗口被移动里触发的事件
onresize     当浏览器的大小被改变时触发的事件
onscroll         浏览器的滚动条位置发生变化时触发的事件
onstop          浏览器的"停止"按钮被按下或者正在下载的文件被中断时触发的事件.

12. 表单相关事件
onreset      当表单中reset属性被激活时触发的事件.
onsubmit 一个表单被递交时触发的事件.

13.滚动字幕事件
onbounce    当marquee内的内容移动至marquee显示范围之外时触发的事件.
onfinish      当marquee元素完成需要显示的内容后触发的事件.
onstart        当marquee元素开始显示内容时触发的事件.

14.编辑事件.
onbeforecopy    当页面当前的被选择内容将要复制到浏览者系统的剪贴板前触发的事件.
onbeforeupdate 当浏览者粘贴系统剪贴板中的内容时通知目标对象
oncontextmenu   当按下鼠标右键出现菜单或通过键盘的按键触发页面菜单时触发的事件.
                                <body oncontentmenu="return false">禁止使用鼠标右键
oncopy              当页面当前被选择内容被复制后触发的事件
oncut                  当页面当前被选择内容被剪切时触发的事件
onpaste               当内容被粘贴时触发的事件
ondrag                当某个对象被拖动时触发的事件
ondragend          当鼠标拖动结束时触发的事件,即鼠标的按键被释放时触发的事件.

15.数据绑定
onafterupdate    当数据完成由数据源到对象的传送时触发的事件
oncellchange      当数据来源发生变化时触发的事件
ondataavailable 当数据接收完成时触发的事件
ondatasetchanged   数据在数据源发生变化时触发的事件.
ondatasetcomplete   当数据源的全部有效数据读取完毕时触发的事件.
onerrorupdate          当使用onbeforeupdate事件触发取消了数据传送时,代替onafterupdate事件.
onrowenter               当前数据源的数据发生变化并且有新的有效数据时触发的事件.
onrowexit                 当前数据源的数据将要发生变化时触发的事件
onrowsdelete            当前数据记录将被删除时触发的事件
onrowsinserted         当前数据源将要插入新数据记录时触发的事件

16.外部事件
onafterprint      当文档被打印后触发的事件
onbeforeprint   当文档即将打印时触发的事件
onhelp              当浏览者按下F1键或者单击浏览器中的"帮助"按钮时触发的事件

 

 

 

 

 

click() 对象.click() 使对象被点击。
closed 对象.closed 对象窗口是否已关闭true/false
clearTimeout(对象) 清除已设置的setTimeout对象
clearInterval(对象) 清除已设置的setInterval对象
confirm("提示信息") 弹出确认框,确定返回true取消返回false
cursor:样式 更改鼠标样式 hand crosshair text wait help default auto e/s/w/n-resize

event.clientX 返回最后一次点击鼠标X坐标值;
event.clientY 返回最后一次点击鼠标Y坐标值;
event.offsetX 返回当前鼠标悬停X坐标值
event.offsetY 返回当前鼠标悬停Y坐标值

document.write(document.lastModified) 网页最后一次更新时间
document.ondblclick=x 当双击鼠标产生事件
document.onmousedown=x 单击鼠标键产生事件

document.body.scrollTop; 返回和设置当前竖向滚动条的坐标值,须与函数配合,
document.body.scrollLeft; 返回和设置当前横向滚动务的坐标值,须与函数配合,
document.title document.title="message"; 当前窗口的标题栏文字
document.bgcolor document.bgcolor="颜色值"; 改变窗口背景颜色
document.Fgcolor document.Fgcolor="颜色值"; 改变正文颜色
document.linkcolor document.linkcolor="颜色值"; 改变超联接颜色
document.alinkcolor document.alinkcolor="颜色值"; 改变正点击联接的颜色
document.VlinkColor document.VlinkColor="颜色值"; 改变已访问联接的颜色
document.forms.length 返回当前页form表单数
document.anchors.length 返回当前页锚的数量
document.links.length 返回当前页联接的数量
document.onmousedown=x 单击鼠标触发事件
document.ondblclick=x 双击鼠标触发事件
defaultStatus window.status=defaultStatus; 将状态栏设置默认显示

function function xx(){...} 定义函数
isNumeric 判断是否是数字
innerHTML xx=对象.innerHTML 输入某对象标签中的html源代码
innerText divid.innerText=xx 将以div定位以id命名的对象值设为XX

location.reload(); 使本页刷新,target可等于一个刷新的网页

Math.random() 随机涵数,只能是0到1之间的数,如果要得到其它数,可以为*10,再取整
Math.floor(number) 将对象number转为整数,舍取所有小数
Math.min(1,2) 返回1,2哪个小
Math.max(1,2) 返回1,2哪个大

navigator.appName 返回当前浏览器名称
navigator.appVersion 返回当前浏览器版本号
navigator.appCodeName 返回当前浏览器代码名字
navigator.userAgent 返回当前浏览器用户代标志

onsubmit onsubmit="return(xx())" 使用函数返回值
opener opener.document.对象 控制原打开窗体对象

prompt xx=window.prompt("提示信息","预定值"); 输入语句
parent parent.框架名.对象 控制框架页面

return return false 返回值
random 随机参数(0至1之间)
reset() form.reset(); 使form表单内的数据重置

split("") string.split("") 将string对象字符以逗号隔开
submit() form对象.submit() 使form对象提交数据

String对象的 charAt(x)对象 反回指定对象的第多少位的字母
lastIndexOf("string") 从右到左询找指定字符,没有返回-1
indexOf("string") 从左到右询找指定字符,没有返回-1
LowerCase() 将对象全部转为小写
UpperCase() 将对象全部转为大写
substring(0,5) string.substring(x,x) 返回对象中从0到5的字符
setTimeout("function",time) 设置一个超时对象
setInterval("function",time) 设置一个超时对象

toLocaleString() x.toLocaleString() 从x时间对象中获取时间,以字符串型式存在
typeof(变量名) 检查变量的类型,值有:String,Boolean,Object,Function,Underfined

window.event.button==1/2/3 鼠标键左键等于1右键等于2两个键一起按为3
window.screen.availWidth 返回当前屏幕宽度(空白空间)
window.screen.availHeight 返回当前屏幕高度(空白空间)
window.screen.width 返回当前屏幕宽度(分辨率值)
window.screen.height 返回当前屏幕高度(分辨率值)
window.document.body.offsetHeight; 返回当前网页高度
window.document.body.offsetWidth; 返回当前网页宽度
window.resizeTo(0,0) 将窗口设置宽高
window.moveTo(0,0) 将窗口移到某位置
window.focus() 使当前窗口获得焦点
window.scroll(x,y) 窗口滚动条坐标,y控制上下移动,须与函数配合
window.open() window.open("地址","名称","属性")
属性:toolbar(工具栏),location(地址栏),directions,status(状态栏),
menubar(菜 单栏),scrollbar(滚动条),resizable(改变大小), width(宽),height(高),fullscreen(全 屏),scrollbars(全屏时无滚动条无参 数,channelmode(宽屏),left(打开窗口x坐标),top(打开窗口y坐标)
window.location = ’view-source:’ + window.location.href 应用事件查看网页源代码;

a=new Date(); //创建a为一个新的时期对象
y=a.getYear(); //y的值为从对象a中获取年份值 两位数年份
y1=a.getFullYear(); //获取全年份数 四位数年份
m=a.getMonth(); //获取月份值
d=a.getDate(); //获取日期值
d1=a.getDay(); //获取当前星期值
h=a.getHours(); //获取当前小时数
m1=a.getMinutes(); //获取当前分钟数
s=a.getSeconds(); //获取当前秒钟数

对象.style.fontSize="文字大小";
单位:mm/cm/in英寸/pc帕/pt点/px象素/em文字高
1in=1.25cm
1pc=12pt
1pt=1.2px(800*600分辩率下)

文本字体属性:
fontSize大小
family字体
color颜色
fontStyle风格,取值为normal一般,italic斜体,oblique斜体且加粗
fontWeight加粗,取值为100到900不等,900最粗,light,normal,bold
letterSpacing间距,更改文字间距离,取值为,1pt,10px,1cm
textDecoration:文字修饰;取值,none不修饰,underline下划线,overline上划线
background:文字背景颜色,
backgroundImage:背景图片,取值为图片的插入路径

点击网页正文函数调用触发器:

1.onClick 当对象被点击
2.onLoad 当网页打开,只能书写在body中
3.onUnload 当网页关闭或离开时,只能书写在body中
4.onmouseover 当鼠标悬于其上时
5.onmouseout 当鼠标离开对象时
6.onmouseup 当鼠标松开
7.onmousedown 当鼠标按下键
8.onFocus 当对象获取焦点时
9.onSelect 当对象的文本被选中时
10.onChange 当对象的内容被改变
11.onBlur 当对象失去焦点
onsubmit=return(ss())表单调用时返回的值

直线 border-bottom:1x solid black
虚线 border-bottom:1x dotted black
点划线 border-bottom:2x dashed black
双线 border-bottom:5x double black
槽状 border-bottom:1x groove black
脊状 border-bottom:1x ridge black

1.边缘高光glow(color=颜色,strength=亮光大小)

Tags: javascript js 网页脚本  

shunz – 周三, 2005 – 03 – 30 13:04
学习笔记
发表评论 – 更多 – 2530 reads
  
?  
网页自动设置为主页
在定义了前面的javascript的cookie函数的前题下:
在后面加上

onMouseOver="if(!this.isHomePage(’http://www.lactc.com/’)  
&&
window.external && !GetCookie(’HomePage’))

{
this.setHomePage(’http://www.lactc.com’) ;

SetCookie(’HomePage’,’true’);
}
return
false;">
并且在前面加上

标签:

Web技术

SQL SERVER乐观锁定和悲观锁定使用实例

作者:Ray 2008年11月19日
 本文使用一个实例来说明如何使用乐观锁定和悲观锁定来解决多用户并发的环境里,其他用户已经把你要修改的数据进行了修改而造成数据的不一致的问题。

  在实际的多用户并发访问的生产环境里边,我们经常要尽可能的保持数据的一致性。而其中最典型的例子就是我们从表里边读取数据,检查验证后对数据进行修改,然后写回到数据库中。在读取和写入的过程中,如果在多用户并发的环境里边,其他用户已经把你要修改的数据进行了修改是非常有可能发生的情况,这样就造成了数据的不一致性。解决这样的办法,SQL SERVER提出了乐观锁定和悲观锁定的概念,下边我以一个实例来说明如何使用乐观锁定和悲观锁定来解决这样的问题。

  /*建立测试表:Card,代表一个真实的卡库,供用户注册。用户要从里边选出一个未使用的卡,也就是F_Flag=0的卡,给用户注册:更新F_Name,F_Time,F_Flag字段。如果出现两个用户同时更新一张卡的情况,是不能容忍的,也就是我们所说的数据不一致行。*/

create table Card(F_CardNO varchar(20),F_Name varchar(20),F_Flag bit,F_Time datetime)
Go
insert Card(F_CardNo,F_Flag) select '1111-1111',0
insert Card(F_CardNo,F_Flag) select '1111-1112',0
insert Card(F_CardNo,F_Flag) select '1111-1113',0
insert Card(F_CardNo,F_Flag) select '1111-1114',0
insert Card(F_CardNo,F_Flag) select '1111-1115',0
insert Card(F_CardNo,F_Flag) select '1111-1116',0
insert Card(F_CardNo,F_Flag) select '1111-1117',0
insert Card(F_CardNo,F_Flag) select '1111-1118',0
insert Card(F_CardNo,F_Flag) select '1111-1119',0
insert Card(F_CardNo,F_Flag) select '1111-1110',0
Go

  -- 下边是我们经常使用的更新方案如下:

 

declare @CardNo varchar(20)
Begin Tran
-- 选择一张未使用的卡
select top 1 @CardNo=F_CardNo
from Card  where F_Flag=0
-- 延迟50秒,模拟并发访问.
waitfor delay '000:00:50'
-- 把刚才选择出来的卡进行注册.
update Card
set F_Name=user,
F_Time=getdate(),
F_Flag=1
where F_CardNo=@CardNo
commit

  问题:如果我们在同一窗口执行同一段代码,但是去掉了waitfor delay子句。两边执行完毕后,我们发现尽管执行了两次注册,但是只注册了一张卡,也就是两个人注册了同一张卡。

  悲观锁定解决方案

  -- 我们只要对上边的代码做微小的改变就可以实现悲观的锁定。

declare @CardNo varchar(20)
Begin Tran
-- 选择一张未使用的卡
select top 1 @CardNo=F_CardNo
from Card  with (UPDLOCK) where F_Flag=0
-- 延迟50秒,模拟并发访问.
waitfor delay '000:00:50'
-- 把刚才选择出来的卡进行注册

update Card
set F_Name=user,
F_Time=getdate(),
F_Flag=1
where F_CardNo=@CardNo
commit

  注意其中的区别了吗?with(updlock),是的,我们在查询的时候使用了with(UPDLOCK)选项,在查询记录的时候我们就对记录加上了更新锁,表示我们即将对次记录进行更新。注意更新锁和共享锁是不冲突的,也就是其他用户还可以查询此表的内容,但是和更新锁和排它锁是冲突的。所以其他的更新用户就会阻塞。如果我们在另外一个窗口执行此代码,同样不加waifor delay子句。两边执行完毕后,我们发现成功的注册了两张卡。可能我们已经发现了悲观锁定的缺点:当一个用户进行更新的事务的时候,其他更新用户必须排队等待,即使那个用户更新的不是同一条记录。

 

  乐观锁定解决方案

  -- 首先我们在Card表里边加上一列F_TimeStamp 列,该列是varbinary(8)类型。但是在更新的时候这个值会自动增长。

alter table Card add F_TimeStamp timestamp not null
-- 悲观锁定
declare @CardNo varchar(20)
declare @timestamp varbinary(8)
declare @rowcount int
Begin Tran
-- 取得卡号和原始的时间戳值
select top 1 @CardNo=F_CardNo,
@timestamp=F_TimeStamp
from Card
where F_Flag=0
-- 延迟50秒,模拟并发访问.
waitfor delay '000:00:50'
-- 注册卡,但是要比较时间戳是否发生了变化.如果没有发生变化.更新成功.如果发生变化,更新失败.
update Card
set F_Name=user,
F_Time=getdate(),
F_Flag=1
where F_CardNo=@CardNo and F_TimeStamp=@timestamp
set @rowcount=@@rowcount
if @rowcount=1
begin
print '更新成功!'
commit
end
else if @rowcount=0
begin
if exists(select 1 from Card where F_CardNo=@CardNo)
begin
print '此卡已经被另外一个用户注册!'
rollback tran
end
else
begin
print '并不存在此卡!'
rollback tran
end
end

  在另外一个窗口里边执行没有waitfor的代码,注册成功后,返回原来的窗口,我们就会发现到时间后它显示的提示是此卡以被另外一个用户注册的提示。很明显,这样我们也可以避免两个用户同时注册一张卡的现象的出现。同时,使用这种方法的另外一个好处是没有使用更新锁,这样增加的系统的并发处理能力。

注意:实际上并不需要使用时间戳的列,因为F_Flag本身就可以区分是否已经修改。

修改如下:

<code>

-- 取得卡号和原始的时间戳值
select top 1 @CardNo=F_CardNo
from Card
where F_Flag=0
-- 延迟50秒,模拟并发访问.
waitfor delay '000:00:50'
-- 注册卡,但是要比较时间戳是否发生了变化.如果没有发生变化.更新成功.如果发生变化,更新失败.
update Card
set F_Name=user,
F_Time=getdate(),
F_Flag=1
where F_CardNo=@CardNo and F_Flag=0
set @rowcount=@@rowcount
if @rowcount=1
begin
print '更新成功!'
commit
end
else if @rowcount=0
begin
if exists(select 1 from Card where F_CardNo=@CardNo)
begin
print '此卡已经被另外一个用户注册!'
rollback tran
end
else
begin
print '并不存在此卡!'
rollback tran
end
end

</code>

  上边我详细介绍了乐观锁定和悲观锁定的使用方法,在实际生产环境里边,如果并发量不大,我们完全可以使用悲观锁定的方法,因为这种方法使用起来非常方便和简单。但是如果系统的并发非常大的话,悲观锁定会带来非常大的性能问题,所以我们就要选择乐观锁定的方法。

  如果大家发现文章里边有什么错误的地方,请及时提醒我,也欢迎有兴趣的一起研究讨论。

标签:

Web技术

Powered by BlogEngine.NET 1.4.5.0