载入中,请稍候 ……
 
» 您尚未 登录  注册 | 首页 | 论坛 | 繁体版 | 金曲版 | 搜索 | 个人文集 | 私人日记 | 娱乐中心 | 帮助

 经典人文社区 动漫音乐城 著名搜索引擎 精品网址荟萃 在线实用工具

每次一句英语 >>   [打开聊天室]  [RSS RDF/XML]

快速导航:原创诗歌沙龙 原创散文部落 原创小说家园 原创杂文世界 精美短文 小说在线阅读 四海搜奇 文化杂谈 幽默世界 日常指南 感情交流 情感故事 恋爱时尚 交友相册 唯美贴图 音乐时空 文体娱乐 动漫地带 金融经济保险 电脑软件 笑傲江湖 疯狂宠物 论坛事务
精品文化论坛 -> 电脑软件 -> JavaScript的一些编程资料您是本帖的第 34670 个阅读者

{第1页  1   2   3   4  …… 第4页}    Pages:(共 4 页) 发新帖 新投票 回复此帖
  --> 本页主题: JavaScript的一些编程资料 加为IE收藏 收藏主题 | 上一主题 | 下一主题
guojun

 头衔:精品CEO

 级别:论坛管理员 发贴:19198
 威望:16316 金钱:1095930.2
 >>> 拥有的物品
 注册时间:2004-06-06
 最后登陆:2017-07-13
《guojun个人文集》
《guojun私人日记》
《guojun电子相册》
宠物 PET
  查看作者资料 发送短消息  查看OICQ资料 推荐此贴 引用回复这个贴子 删除或编辑改帖子  加入文集
本站微信公众号:gj19199
请扫描二维码加关注:

确认是否关闭浏览器或转到其它页面

在Body标签中加入
onbeforeunload=return(false)
即可,如下:

<body onbeforeunload=return(false)>

用Cookie实现仅弹出一次窗口

脚本说明:
第一步:把如下代码加入<head>区域中
<SCRIPT language="javascript">
<!--
function openpopup(){
window.open("welcome.htm","","width=300,height=300")
}


function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (documents.cookie.length > 0) {
offset = documents.cookie.indexOf(search)
if (offset != -1) { // if cookie exists
offset += search.length
// set index of beginning of value
end = documents.cookie.indexOf(";", offset);
// set index of end of cookie value
if (end == -1)
end = documents.cookie.length;
returnvalue=unescape(documents.cookie.substring(offset, end))
}
}
return returnvalue;
}

function loadpopup(){
if (get_cookie('popped')==''){
openpopup()
documents.cookie="popped=yes"
}
}

//-->
</SCRIPT>


第二步:把<body>中内容改为:
<body bgcolor="#fef4d9" onunload="loadpopup()">


一全很经典的堆积演示程序(javascript)

脚本说明:
第一步:把如下代码加入<head>区域中
<SCRIPT LANGUAGE="javascript">
<!-- Original: 陆晓庆 (xiaoqinglu@263.net) -->

<!-- Begin
var MAXHEIGHT = 8;
var ndisk;
var timer = null;
var mvfrom = new Array(255);
var mvto = new Array(255);
var mv, imv;
var tower = new Array(3);
var h = new Array(3);
var spc = " ";
var dname = new Array(
"│",
"111",
"22222",
"3333333",
"444444444",
"55555555555",
"6666666666666",
"777777777777777",
"88888888888888888");

function init() {
if (!timer) {
s = document.formHanoi.disk.options[document.formHanoi.disk.selectedIndex].value;
if (s == "random") {
now = new Date();
ndisk = parseInt(now.getTime() / 1000) % 8 + 1;
delete now;
}
else ndisk = s;
mv = 0;
hanoi(0, 2, 1, ndisk);
for (i = 0; i < 3; i++)
tower[ i] = new Array(MAXHEIGHT);
for (i = 0; i < ndisk; i++)
tower[0][ i] = ndisk - i;
h[0] = ndisk;
h[1] = h[2] = 0;
imv = 0;
document.formHanoi.display.value = gentower();
timer = window.setTimeout("gennexttower()", document.formHanoi.delay.options
[document.formHanoi.delay.selectedIndex].value);
}
}
function stop() {
if (timer) {
window.clearTimeout(timer);
timer = null;
}
}
function hanoi(from,to,buf,nmv) {
if (nmv > 1) {
hanoi(from, buf, to, nmv - 1);
mvfrom[mv] = from;
mvto[mv++] = to;
hanoi(buf, to, from, nmv - 1);
}
else {
mvfrom[mv] = from;
mvto[mv++] = to;
}
}
function gennexttower() {
tower[mvto[imv]][h][mvto[imv]]++] = tower[mvfrom][imv]][--h][mvfrom][imv]]];
document.formHanoi.display.value = gentower();
if (++imv < mv)
timer = window.setTimeout("gennexttower()", document.formHanoi.delay.options
[document.formHanoi.delay.selectedIndex].value);
else {
for (i = 0; i < 3; i++)
delete tower[ i];
timer = null;
}
}
function gentower() {
s = " \n";
for (i = MAXHEIGHT - 1; i >= 0; i--) {
for (j = 0; j < tower.length; j++) {
len = i < h[j] ? tower[j][ i] : 0;
width = MAXHEIGHT - len;
s += " " + spc.substring(0, width) + dname[len] + spc.substring(0, width);
}
s += "\n";
}
return s+"=======================================================";
}
// End -->
</script>


第二步:把如下代码加入<body>区域中
<form name=formHanoi>
<textarea name=display rows=10 cols=56></textarea>

<table border=0 cellspacing=10 cellpadding=0>
<tr>
<td>堆积层数</td>
<td><select name=disk>
<option selected value=random>Random
<option value=1>1
<option value=2>2
<option value=3>3
<option value=4>4
<option value=5>5
<option value=6>6
<option value=7>7
<option value=8>8
</select></td>
</tr>
<tr>
<td>延迟时间</td>
<td><select name=delay>
<option value=100>100 milliseconds
<option value=200>200 milliseconds
<option value=300>300 milliseconds
<option value=400>400 milliseconds
<option selected value=500>500 milliseconds
<option value=600>600 milliseconds
<option value=700>700 milliseconds
<option value=800>800 milliseconds
<option value=900>900 milliseconds
<option value=1000>1000 milliseconds
</select></td>
</tr>
</table>
<input type=button value="Start" onClick="init();">
<input type=button value="Stop" onClick="stop();">
</form>




梦回唐宋    

煌煌宋词唐诗。李杜辛苏无数。
明月大江数风流,饮酒处、梅兰松竹。

多情寄思忧,问青天、此景何有?
悠悠千古人依旧,尽华章,宋月唐风。

作于 2007.5.3   

[1楼] | IP:已记录| 发表:2005-09-15 20:51 PM| 顶端    [送鲜花] [扔鸡蛋

guojun

 头衔:精品CEO

 级别:论坛管理员 发贴:19198
 威望:16316 金钱:1095930.2
 >>> 拥有的物品
 注册时间:2004-06-06
 最后登陆:2017-07-13
《guojun个人文集》
《guojun私人日记》
《guojun电子相册》
宠物 PET
  查看作者资料 发送短消息  查看OICQ资料 推荐此贴 引用回复这个贴子 删除或编辑改帖子  加入文集

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>MID点歌器</title>
<style>.f{font-size:9pt;width:190pt}</style>
<script>
//程序设计虹雨
path="http://card4.yinsha.com/midi/";
var stext=new Array()
stext[0]='angels we have heard on high'
stext[1]='away in a manger'
stext[2]='beginning to look a lot like christmas'
stext[3]='carol bells'
stext[4]='chestnuts roasting on an open fire'
stext[5]='deck the halls'
stext[6]='do you hear what i hear'
stext[7]='frosty'
stext[8]='god rest ye merry gentlemen'
stext[9]='grandma got run over'
stext[10]='happy christmas'
stext[11]='hark the herald angels sing'
stext[12]='have a holly jolly christmas'
stext[13]='holy night'
stext[14]='i saw mommy kissing santa claus'
stext[15]='jingle bells'
stext[16]='the first noel'
stext[17]='the holly and thi iny'
stext[18]=颽次求婚'
stext[19]='阿lam日记'
stext[20]='阿尔汉布拉宫的回忆'
stext[21]='阿根廷不要为我哭泣'
stext[22]='阿拉伯跳舞女郎'
stext[23]='阿拉伯绮想曲'
stext[24]='阿拉丁'
stext[25]='阿斯图利亚斯的传奇'
stext[26]='爱出个未来'
stext[27]='爱的很小心'
stext[28]='爱的呼唤'
stext[29]='爱火烧不尽'
stext[30]='爱那么重'
stext[31]='爱那麽重'
stext[32]='爱你到永远'
stext[33]='爱你一定快乐'
stext[34]='爱你一万年'
stext[35]='爱你这样傻'
stext[36]='爱念'
stext[37]='爱拼才会赢'
stext[38]='爱情白皮书'
stext[39]='爱情故事'
stext[40]='爱情傀儡'
stext[41]='爱情影画戏'
stext[42]='爱人'
stext[43]='爱如潮水'
stext[44]='爱上一个不回家的人'
stext[45]='爱是永恒'
stext[46]='爱我到今生'
stext[47]='爱我的人和我爱的人'
stext[48]='爱我好吗'
stext[49]='爱无止境'
stext[50]='爱相随'
stext[51]='爱相随2'
stext[52]='爱与愁'
stext[53]='安妮'
stext[54]='八月桂花遍地开'
stext[55]='八月桂花香'
stext[56]='巴西华尔兹'
stext[57]='拜年'
stext[58]='半点心'
stext[59]='半梦半醒之间'
stext[60]='包青天'
stext[61]='悲伤朱丽叶'
stext[62]='悲伤茱丽叶'
stext[63]='北方的狼'
stext[64]='北国之春'
stext[65]='北京'
stext[66]='被动'
stext[67]='彼特和狼'
stext[68]='变心的翅膀'
stext[69]='别爱我'
stext[70]='别怕我伤心'
stext[71]='别让情两难'
stext[72]='别让我恨你'
stext[73]='别让我最后知道'
stext[74]='别问我是谁'
stext[75]='别以为我懂'
stext[76]='冰雨'
stext[77]='勃兰登堡协奏曲'
stext[78]='不会哭于你面前'
stext[79]='不可能的任务'
stext[80]='不老的传说'
stext[81]='不了情'
stext[82]='不留余情'
stext[83]='不拖不'
stext[84]='不要对他说'
stext[85]='不要在乎我是谁'
stext[86]='不知不觉想起你'
stext[87]='布雷舞曲'
stext[88]='步步高'
stext[89]='财神到'
stext[90]='采茶扑蝶'
stext[91]='缠绵'
stext[92]='长城'
stext[93]='长流不息'
stext[94]='长夜多浪漫'
stext[95]='超人'
stext[96]='城里的月光'
stext[97]='橙路'
stext[98]='赤裸裸'
stext[99]='冲开一切'
stext[100]='初恋'
stext[101]='初恋情人'
stext[102]='出场'
stext[103]='出水莲'
stext[104]='楚留香'
stext[105]='处处留情'
stext[106]='传奇'
stext[107]='船歌'
stext[108]='吹散为你留下的梦'


stt=0
k=0
var otxt=new Array()
otxt[0]='[> ]'
otxt[1]='[>> ]'
otxt[2]='[ >> ]'
otxt[3]='[ >> ]'
otxt[4]='[ >> ]'
otxt[5]='[ >> ]'
otxt[6]='[ >> ]'
otxt[7]='[ >>]'
otxt[8]='[ >]'
function findc(obj){
j=1
for(i=0;i<stext.length;i++){
temp=""+stext[ i]
if(temp.indexOf(obj.find.value)!=-1)
{
var no = new Option()
no.value = stext[ i]
no.text = stext[ i]
obj.music.options[j++]=no
}
}
obj.music.options.length =j
obj.midopen.value=" "
obj.txt.value="找到歌共"+obj.music.options.length+"首"
}


function auto(obj){
if(obj.midopen.value=="停止播放"){
clearInterval(stt)
obj.midopen.value="播放歌曲"
midon=document.mid.dynsrc
document.mid.dynsrc="about:blank"
}else{
clearInterval(stt)
obj.midopen.value="停止播放"
document.mid.dynsrc=midon
obj.txt.value="第"+obj.music.selectedIndex+"首、曲名是:"+mid
stt=setInterval("atxt()",200)
}
}
function x(obj){
mid=obj.music.options[obj.music.selectedIndex].value;
if (mid!=""){
clearInterval(stt)
document.mid.dynsrc="about:blank"
obj.midopen.value="停止播放"
document.mid.dynsrc=path+mid+".mid";
obj.txt.value="第"+obj.music.selectedIndex+"首、曲名是:"+mid
stt=setInterval("atxt()",200)
}
}
function atxt(){
k++
if(k==otxt.length)k=0
document.forms[0].otx.value=otxt[k]
}
</script>
<link rel="stylesheet" href="../hy.css">
</head>

<body background="../gif/mbg.gif" bgcolor="#FFFFFF">

<form>
<div align="center">
<center>
<table border="0" bgcolor="#FCE01B" cellspacing="5">
<tr>
<td><table border="1" bordercolorlight="#000000" cellspacing="0" bordercolordark="#FFFFFF"
background="../gif/tb.gif">
<tr>
<td><font color="#FF0000">彩虹细雨MID播放机</font></td>
</tr>
<tr>
<td>

<input type="button" value="快速搜索" onclick="findc(this.form)" style="background-image: url
('../gif/tb.gif')">

歌曲名称:<input type="text" name="find" size="20">[虹雨设计]

</td>
</tr>
<tr>
<td>

<p> <input type="button" value=" " onclick="auto(this.form)" name="midopen"
style="background-image: url('../gif/tb.gif')"><img name="mid" dynsrc="about:blank" width="1"
height="1">
<script>
document.write("<select size=1 name=music onChange=x(this.form) class=f>")
document.write("<option value=\"\">选择音乐")
for(i=0;i<stext.length;i++)document.write("<OPTION value=\""+stext[ i]+"\">"+stext[ i])
document.write("</select>")
</script></p>

</td>
</tr>
<tr>
<td><input type="text" name="otx" size="10" onFocus="blur()"> <input type="text" name="txt" size="40"
onFocus="blur()"></td>
</tr>
</table> </td>
</tr>
</table>
</center>
</div>
</form
 
</body>

</html>


梦回唐宋    

煌煌宋词唐诗。李杜辛苏无数。
明月大江数风流,饮酒处、梅兰松竹。

多情寄思忧,问青天、此景何有?
悠悠千古人依旧,尽华章,宋月唐风。

作于 2007.5.3   

[2楼] | IP:已记录| 发表:2005-09-15 20:52 PM| 顶端    [送鲜花] [扔鸡蛋

guojun

 头衔:精品CEO

 级别:论坛管理员 发贴:19198
 威望:16316 金钱:1095930.2
 >>> 拥有的物品
 注册时间:2004-06-06
 最后登陆:2017-07-13
《guojun个人文集》
《guojun私人日记》
《guojun电子相册》
宠物 PET
  查看作者资料 发送短消息  查看OICQ资料 推荐此贴 引用回复这个贴子 删除或编辑改帖子  加入文集

一段对密码进行加密的脚本

<script>
//Encrypted Password script- By Rob Heslop
//Script featured on Dynamic Drive
//Visit http://www.dynamicdrive.com

function submitentry(){
password = document.password1.password2.value.toLowerCase()
username = document.password1.username2.value.toLowerCase()
passcode = 1
usercode = 1
for(i = 0; i < password.length; i++) {
passcode *= password.charCodeAt(i);
}
for(x = 0; x < username.length; x++) {
usercode *= username.charCodeAt(x);
}
//CHANGE THE NUMBERS BELOW TO REFLECT YOUR USERNAME/PASSWORD
if(usercode==134603040&&passcode==126906300)
//CHANGE THE NUMBERS ABOVE TO REFLECT YOUR USERNAME/PASSWORD
{
window.location=password+".htm"}
else{
alert("password/username combination wrong")}
}
</script>

<form name="password1">
<strong>Enter username: </strong>
<input type="text" name="username2" size="15">
<br>
<strong>Enter password: </strong>
<input type="password" name="password2" size="15">

<input type="button" value="Submit" onClick="submitentry()">
</form>




梦回唐宋    

煌煌宋词唐诗。李杜辛苏无数。
明月大江数风流,饮酒处、梅兰松竹。

多情寄思忧,问青天、此景何有?
悠悠千古人依旧,尽华章,宋月唐风。

作于 2007.5.3   

[3楼] | IP:已记录| 发表:2005-09-15 20:52 PM| 顶端    [送鲜花] [扔鸡蛋

guojun

 头衔:精品CEO

 级别:论坛管理员 发贴:19198
 威望:16316 金钱:1095930.2
 >>> 拥有的物品
 注册时间:2004-06-06
 最后登陆:2017-07-13
《guojun个人文集》
《guojun私人日记》
《guojun电子相册》
宠物 PET
  查看作者资料 发送短消息  查看OICQ资料 推荐此贴 引用回复这个贴子 删除或编辑改帖子  加入文集

一种函数的计算方法并给出相应的曲线图片

<SCRIPT LANGUAGE="javascript">
<!-- Begin
var a, b, c;
function xtop(form) {
form.u.value = (form.b.value * -1) / (form.a.value * 2);
}
function ytop(form) {
form.u2.value = -1 * (form.b.value * form.b.value) / (4 * form.a.value) - (-1 * form.c.value);
}
function doCoord(form) {
form.co.value = form.u.value + "," + form.u2.value;
}
function disc(form) {
form.o.value = (form.b.value * form.b.value) - (form.a.value * form.c.value * 4);
}
function zeroes1(form) {
form.n.value = ((form.b.value * -1) - (Math.sqrt(form.o.value))) / (form.a.value * 2);
}
function zeroes2(form) {
form.n2.value = ((form.b.value * -1) - (-1 * Math.sqrt(form.o.value))) / (form.a.value * 2);
}
function move_in(img_name,img_src) {
document[img_name].src=img_src;
}
// End -->
</script>
<form>
<table bgcolor="#C0C0C0" cellspacing=2 cellpadding=2 border=3>
<tr>
<td>
<b>
<h3>Parabolic Calculator</h3>
<input name="a" size="3">X<sup>2</sup>+
<input name="b" size="3">X +
<input name="c" size="3">
<br>
<input type="button" value="x-top" name="x-top" onclick="xtop(this.form)">
<input type="button" value="y-top" name="y-top" onclick="ytop(this.form)">
<input type="button" value="crd" name="crd" onclick="doCoord(this.form)">
<input type="button" value="disc." name="D" onclick="disc(this.form)">
<br>
<input type="button" value="0-points" name="zeroes" onclick="zeroes1(this.form);zeroes2(this.form)">
<input type="button" onclick="xtop(this.form);ytop(this.form);doCoord(this.form);disc(this.form);zeroes1(this.form);zeroes2(this.form)" value="do all">
<input type="button" name="pics" value="show e.g." onClick="if(form.a.value>0 && form.o.value>0)move_in('p','p2.gif');if (form.a.value<0 && form.o.value>0)move_in('p','p3.gif'); if(form.a.value>0 && form.o.value==0) move_in('p','p4.gif'); if(form.a.value<0 && form.o.value==0) move_in('p','p5.gif'); if(form.a.value>0 && form.o.value<0) move_in('p','p6.gif'); if(form.a.value<0 && form.o.value<0) move_in('p','p7.gif')" value="show e.g.">
<br>
<input type="text" name="u" size="8"> x-top<br>
<input type="text" name="u2" size="8"> y-top<br>
<input type="text" size="8" name="co" onmouseover="form.rem.value=form.co.value"> Coord.<br>
<input type="text" size="8" name="o"> Discriminant<br>
<input type="text" size="8" name="n"> neg zero pt.<br>
<input type="text" size="8" name="n2"> pos zero pt.
<input type="hidden" value="" name="rem"><br>
<input type="reset" value="reset"><br>
</b>
</td>
<td><img src="p1.gif" width=200 name="p" height=200 border=0 alt=""></td>
</tr>
</table>
</form>



梦回唐宋    

煌煌宋词唐诗。李杜辛苏无数。
明月大江数风流,饮酒处、梅兰松竹。

多情寄思忧,问青天、此景何有?
悠悠千古人依旧,尽华章,宋月唐风。

作于 2007.5.3   

[4楼] | IP:已记录| 发表:2005-09-15 20:52 PM| 顶端    [送鲜花] [扔鸡蛋

guojun

 头衔:精品CEO

 级别:论坛管理员 发贴:19198
 威望:16316 金钱:1095930.2
 >>> 拥有的物品
 注册时间:2004-06-06
 最后登陆:2017-07-13
《guojun个人文集》
《guojun私人日记》
《guojun电子相册》
宠物 PET
  查看作者资料 发送短消息  查看OICQ资料 推荐此贴 引用回复这个贴子 删除或编辑改帖子  加入文集

记录访问次数
在主页上设计一个能记录某人到访主页次数的功能是个好主意,下面的脚本就能做到这一点。

<script Language="javascript">
function GookieVal(offset) {
  var endstr = documents.cookie.indexOf (";", offset);
  if (endstr == -1)
  endstr = documents.cookie.length;
  return unescape(documents.cookie.substring(offset, endstr));
}
function Gookie(name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = documents.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (documents.cookie.substring(i, j) == arg)
      return GookieVal (j);
    i = documents.cookie.indexOf(" ", i) + 1;
    if (i == 0) break;
  }
  return null;
}

function Sookie(name, value) {
  var argv = Sookie.arguments;
  var argc = Sookie.arguments.length;
  var expires = (argc > 2) ? argv[2] : null;
  var path = (argc > 3) ? argv[3] : null;
  var domain = (argc > 4) ? argv[4] : null;
  var secure = (argc > 5) ? argv[5] : false;
  documents.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expires.toGMTString())) +((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain)) +((secure == true) ? "; secure" : "");
}

function Dookie(name) {
  var exp = new Date();
  exp.setTime (exp.getTime() - 1);
  var cval = Gookie (name);
  documents.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}
</script>

<script>
var expdate = new Date();
expdate.setTime(expdate.getTime() + (24 * 60 * 60 * 1000 * 365));
if(!(visits = Gookie("3wave"))) {visits = 1;
  Sookie("3wave", visits, expdate, "/", null, false);
  document.write("这是您第" + visits + "次光临本站");}
else{
  visits++;
  Sookie("3wave", visits, expdate, "/", null, false);
  document.write("这是您第" + visits + "次光临本站");
}
</script>



梦回唐宋    

煌煌宋词唐诗。李杜辛苏无数。
明月大江数风流,饮酒处、梅兰松竹。

多情寄思忧,问青天、此景何有?
悠悠千古人依旧,尽华章,宋月唐风。

作于 2007.5.3   

[5楼] | IP:已记录| 发表:2005-09-15 20:52 PM| 顶端    [送鲜花] [扔鸡蛋

guojun

 头衔:精品CEO

 级别:论坛管理员 发贴:19198
 威望:16316 金钱:1095930.2
 >>> 拥有的物品
 注册时间:2004-06-06
 最后登陆:2017-07-13
《guojun个人文集》
《guojun私人日记》
《guojun电子相册》
宠物 PET
  查看作者资料 发送短消息  查看OICQ资料 推荐此贴 引用回复这个贴子 删除或编辑改帖子  加入文集

用javascript在网页中实现掩码文本框


在网页中输日期、时间、IP地址等需要一定的格式限制,否则将会程序将会很难和程序沟痛。
    最近在做一个程序正好需要用到此方面,在网上找到过相应的程序,但用起来都非常恶,于是乎只好自己实现一个了。
    首先实现两个函数用来操作光标:


        // 得到一个文本框控件的当前光标位置
        function getPos(obj)
        {
                obj.focus();
                var workRange=document.selection.createRange();
                obj.select();
                var allRange=document.selection.createRange();
                workRange.setEndPoint("StartToStart",allRange);
                var len=workRange.text.length;
                workRange.collapse(false);
                workRange.select();

                return len;
        }

        // 设置一个文本框控件的当前光标位置
        function setCursor(obj,num){
                range=obj.createTextRange();
                range.collapse(true);
                range.moveStart('character',num);

                range.select();
        }


    主要函数实现的主要思想是当键盘按下时进行一些操作,我设计在onKeyDown事件中。

    在onKeyDown中,首先将系统默认的键盘处理屏蔽掉
        // 封住传统处理
        window.event.returnvalue = false;
    然后处理相应需要处理的键盘消息。
    这里随便处理几个必要的就可以了,因为文本框本身也不需要什么太多的用户操作,所以把光标的前移、后移、删除操作进行处理,这样你的文本框就有了基本的操作,现在操作起来已经很顺手了。
        // 自行处理按钮
        switch (nKeyCode)
        {
                case 8:// 如果动作是退格[<-]
                {
                        strText =  strText.substr(0,nCursorPos-1) + strText.substr(nCursorPos, nTextLen-nCursorPos);
                        nCursorPos--;
                        break;
                }
                case 46:// 如果动作是del[del]
                {
                        strText =  strText.substr(0,nCursorPos) + strText.substr(nCursorPos+1,nTextLen-nCursorPos-1);
                        nCursorPos--;
                        break;
                }
                case 38:// 如果动作是方向键[上]
                case 39:// 如果动作是方向键[右]
                {
                        nCursorPos++;
                        break;
                }
                case 37:// 如果动作是方向键[左]
                case 40:// 如果动作是方向键[下]
                {
                        nCursorPos--;
                        break;
                }
                default :
                {
                        strText =  strText.substr(0,nCursorPos) + String.fromCharCode(nKeyCode) + strText.substr(nCursorPos,nTextLen);

                        nCursorPos++;
                        if (nCursorPos>strText.length)
                        {
                                nCursorPos=strText.length;
                        }
                        break;
                }

        }

    其它的任何消息都当添加一个字符,可见不可见的字符,都将添加并光标往后走一下。见上方的default 处理部份。

    然后判断掩码是否正确,如果正确,那么此次输入合法,将值显示添加到文本框中。
    if (strText.match(expMask))
    {
          // 输入格式正确
          objTextBox.value = strText;
    }

    最后将光标移到适当的位置。 
   
    // 移动光标
    setCursor(objTextBox,nCursorPos);

    完成!
    其主要就是把系统的键盘消息替换成自己的处理,屏蔽掉系统的,这样就可以获得最大的操控。
    如此就完成了一个对指定的正则表达式进行格式限制的TEXTBOX就诞生了。

    附完整代码:

                // 根据指定正表达式,来控制OBJ表示
                function mask(objTextBox,mask)
                {
                        // 掩码
                        expMask = new RegExp(mask);

                        // 当前文本框中的文本
                        var strText =objTextBox.value;
                        // 文本长度
                        var nTextLen=strText.length;

                        // 当前光标位置
                        var nCursorPos=getPos(objTextBox);

                        // 按下的键码
                        var nKeyCode = window.event.keyCode;
                        if (nKeyCode > 95) nKeyCode -= (95-47);

                        // 封住传统处理
                        window.event.returnvalue = false;
                        // 自行处理按钮
                        switch (nKeyCode)
                        {
                                case 8:// 如果动作是退格[<-]
                                {
                                        strText =  strText.substr(0,nCursorPos-1) + strText.substr(nCursorPos, nTextLen-nCursorPos);
                                        nCursorPos--;
                                        break;
                                }
                                case 46:// 如果动作是del[del]
                                {
                                        strText =  strText.substr(0,nCursorPos) + strText.substr(nCursorPos+1,nTextLen-nCursorPos-1);
                                        nCursorPos--;
                                        break;
                                }
                                case 38:// 如果动作是方向键[上]
                                case 39:// 如果动作是方向键[右]
                                {
                                        nCursorPos++;
                                        break;
                                }
                                case 37:// 如果动作是方向键[左]
                                case 40:// 如果动作是方向键[下]
                                {
                                        nCursorPos--;
                                        break;
                                }
                                default :
                                {
                                        strText =  strText.substr(0,nCursorPos) + String.fromCharCode(nKeyCode) + strText.substr(nCursorPos,nTextLen);

                                        nCursorPos++;
                                        if (nCursorPos>strText.length)
                                        {
                                                nCursorPos=strText.length;
                                        }
                                        break;
                                }

                        }

                        if (strText.match(expMask))
                        {
                                // 输入格式正确
                                objTextBox.value = strText;
                        }

                        // 移动光标
                        setCursor(objTextBox,nCursorPos);
                }

                // 得到一个文本框控件的当前光标位置
                function getPos(obj)
                {
                        obj.focus();
                        var workRange=document.selection.createRange();
                        obj.select();
                        var allRange=document.selection.createRange();
                        workRange.setEndPoint("StartToStart",allRange);
                        var len=workRange.text.length;
                        workRange.collapse(false);
                        workRange.select();

                        return len;
                }

                // 设置一个文本框控件的当前光标位置
                function setCursor(obj,num){
                        range=obj.createTextRange();
                        range.collapse(true);
                        range.moveStart('character',num);

                        range.select();
                }





使用方法:
                1.设置默认的、不定的格式初值。如:日期时间的格式初值为“// ::”,表示(年/月/日 时:分:秒)。IP的为“...”(192.168.0.1)。其实就是设置一个不会违反正则表达式的字符就可以。
                2.在表单的TEXT框的onKeyDown事件中调用mask函数,参数objTextBox是指定的文本框的name。参数mask是正则表达式格式的掩码。

例子:
    要使用日期时间型的掩码框
          <input name="i_etmend" type="text" id="i_etmend" value="{I_ETMEND}" maxlength="19"  onkeydown="mask(i_etmend, '^(([0-9]{0,4})\-([0-9]{0,2})\-([0-9]{0,2}) ([0-9]{0,2}):([0-9]{0,2}):([0-9]{0,2}))$')">
    要使用IP掩码框
            <input name="i_bip" type="text" id="i_bip" value="{I_BIP}" maxlength="15" onkeydown="mask(i_bip, '^([0-9]{0,3}[\.][0-9]{0,3}[\.][0-9]{0,3}[\.][0-9]{0,3})$')">



梦回唐宋    

煌煌宋词唐诗。李杜辛苏无数。
明月大江数风流,饮酒处、梅兰松竹。

多情寄思忧,问青天、此景何有?
悠悠千古人依旧,尽华章,宋月唐风。

作于 2007.5.3   

[6楼] | IP:已记录| 发表:2005-09-15 20:53 PM| 顶端    [送鲜花] [扔鸡蛋


{第1页  1   2   3   4  …… 第4页}    Pages:(共 4 页)

 精品文化论坛 -> 电脑软件

发新帖 新投票 回复此帖

[ 联系我们 - 网站地图 - 陇ICP备05000927 ]
Powered by Ofstar 2.6.0 CR Copyright © 2003-05 Ofstar Team Gzip enabled