在b-s开发中经常用到的javaScript技术 _xifo的博客-程序员秘密

技术标签: 浏览器  null  代码收集  iframe  ie  javascript  sql  

一、验证类 
1、数字验证内 
  1.1 整数 
  1.2 大于0的整数 (用于传来的ID的验证) 
  1.3 负整数的验证 
  1.4 整数不能大于iMax 
  1.5 整数不能小于iMin 
2、时间类 
  2.1 短时间,形如 (13:04:06) 
  2.2 短日期,形如 (2003-12-05) 
  2.3 长时间,形如 (2003-12-05 13:04:06) 
  2.4 只有年和月。形如(2003-05,或者2003-5) 
  2.5 只有小时和分钟,形如(12:03) 
3、表单类 
  3.1 所有的表单的值都不能为空 
  3.2 多行文本框的值不能为空。 
  3.3 多行文本框的值不能超过sMaxStrleng 
  3.4 多行文本框的值不能少于sMixStrleng 
  3.5 判断单选框是否选择。 
  3.6 判断复选框是否选择. 
  3.7 复选框的全选,多选,全不选,反选 
  3.8 文件上传过程中判断文件类型 
4、字符类 
  4.1 判断字符全部由a-Z或者是A-Z的字字母组成 
  4.2 判断字符由字母和数字组成。 
  4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母 
  4.4 字符串替换函数.Replace(); 
5、浏览器类 
  5.1 判断浏览器的类型 
  5.2 判断ie的版本 
  5.3 判断客户端的分辨率 
   
6、结合类 
  6.1 email的判断。 
  6.2 手机号码的验证 
  6.3 身份证的验证 
   

二、功能类 

1、时间与相关控件类 
  1.1 日历 
  1.2 时间控件 
  1.3 万年历 
  1.4 显示动态显示时钟效果(文本,如OA中时间) 
  1.5 显示动态显示时钟效果 (图像,像手表)  
2、表单类 
  2.1 自动生成表单 
  2.2 动态添加,修改,删除下拉框中的元素 
  2.3 可以输入内容的下拉框 
  2.4 多行文本框中只能输入iMax文字。如果多输入了,自动减少到iMax个文字(多用于短信发送) 
   
3、打印类 
  3.1 打印控件 
4、事件类 
  4.1 屏蔽右键 
  4.2 屏蔽所有功能键 
  4.3 --> 和<-- F5 F11,F9,F1 
  4.4 屏蔽组合键ctrl+N 
5、网页设计类 
  5.1 连续滚动的文字,图片(注意是连续的,两段文字和图片中没有空白出现) 
  5.2 html编辑控件类 
  5.3 颜色选取框控件 
  5.4 下拉菜单 
  5.5 两层或多层次的下拉菜单 
  5.6 仿IE菜单的按钮。(效果如rongshuxa.com的导航栏目) 
  5.7 状态栏,title栏的动态效果(例子很多,可以研究一下) 
  5.8 双击后,网页自动滚屏 
6、树型结构。 
  6.1 asp+SQL版 
  6.2 asp+xml+sql版 
  6.3 java+sql或者java+sql+xml 
7、无边框效果的制作 
8、连动下拉框技术 
9、文本排序 
10,画图类,含饼、柱、矢量贝滋曲线 
11,操纵客户端注册表类 
12,DIV层相关(拖拽、显示、隐藏、移动、增加) 
13,TABLAE相关(客户端动态增加行列,模拟进度条,滚动列表等) 
14,各种 相关类,如播放器,flash与脚本互动等 
16, 刷新/模拟无刷新 异步调用类(XMLHttp或iframe,frame) 





<script?LANGUAGE="JAVASCRIPT"> 
 
</script> 
 
 
 



4、事件类 
  4.1 屏蔽右键 
      在body标签里加上οncοntextmenu=self.event.returnValue=false   
  4.2 屏蔽所有功能键 

  4.3 --> 和<-- F5 F11,F9,F1 

  4.4 屏蔽组合键ctrl+N 

<script?LANGUAGE=JAVASCRIPT> 
function KeyDown(){    
  if ((window.event.altKey)&& 
      ((window.event.keyCode==37)||   //屏蔽 Alt+ 方向键 ← 
       (window.event.keyCode==39))){  //屏蔽 Alt+ 方向键 → 
     alert("不准你使用ALT+方向键前进或后退网页!"); 
     event.returnValue=false; 
     } 
  if ((event.keyCode==8)||            //屏蔽退格删除键 
      (event.keyCode==116)){          //屏蔽 F5 刷新键 
     event.keyCode=0; 
     event.returnValue=false; 
     } 
  if ((event.ctrlKey)&&(event.keyCode==78)){   //屏蔽 Ctrl+n 
     event.returnValue=false; 
     } 
  if ((event.shiftKey)&&(event.keyCode==121)){ //屏蔽 shift+F10 
     event.returnValue=false; 
     } 
  if (event.keyCode==122){ //屏蔽 F11 
     event.returnValue=false; 
     } 
  } 
只要知道keyCode即可屏蔽所有功能键 


一、验证类 
1、数字验证内 
  1.1 整数 
      /^(-|/+)?/d+$/.test(str) 
  1.2 大于0的整数 (用于传来的ID的验证) 
      /^/d+$/.test(str) 
  1.3 负整数的验证 
      /^-/d+$/.test(str) 
2、时间类 
  2.1 短时间,形如 (13:04:06) 
      function isTime(str) 
      { 
        var a = str.match(/^(/d{1,2})(:)?(/d{1,2})/2(/d{1,2})$/); 
        if (a == null) {alert('输入的参数不是时间格式'); return false;} 
        if (a[1]>24 || a[3]>60 || a[4]>60) 
        { 
          alert("时间格式不对"); 
          return false 
        } 
        return true; 
      } 
  2.2 短日期,形如 (2003-12-05) 
      function strDateTime(str) 
      { 
         var r = str.match(/^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2})$/);  
         if(r==null)return false;  
         var d= new Date(r[1], r[3]-1, r[4]);  
         return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]); 
      } 
  2.3 长时间,形如 (2003-12-05 13:04:06) 
      function strDateTime(str) 
      { 
        var reg = /^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2}) (/d{1,2}):(/d{1,2}):(/d{1,2})$/;  
        var r = str.match(reg);  
        if(r==null)return false;  
        var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);  
        return  

(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()== 

r[7]); 
      } 
  2.4 只有年和月。形如(2003-05,或者2003-5) 
  2.5 只有小时和分钟,形如(12:03) 
3、表单类 
  3.1 所有的表单的值都不能为空 
        
  3.2 多行文本框的值不能为空。 
  3.3 多行文本框的值不能超过sMaxStrleng 
  3.4 多行文本框的值不能少于sMixStrleng 
  3.5 判断单选框是否选择。 
  3.6 判断复选框是否选择. 
  3.7 复选框的全选,多选,全不选,反选 
  3.8 文件上传过程中判断文件类型 
4、字符类 
  4.1 判断字符全部由a-Z或者是A-Z的字字母组成 
               var a = num.match(re); 
        if (a != null) 
        { 
          if (len==15) 
          { 
            var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]); 
            var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; 
          } 
          else 
          { 
            var D = new Date(a[3]+"/"+a[4]+"/"+a[5]); 
            var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; 
          } 
          if (!B) {alert("输入的身份证号 "+ a[0] +" 里出生日期不对!"); return false;} 
        } 
        return true; 
      } 


3.7 复选框的全选,多选,全不选,反选 
 
全选
 

 

 

 

 


 


全选
 

 

 

 

 

 

 

 
function checkAll(str) 

  var a = document.getElementsByName(str); 
  var n = a.length; 
  for (var i=0; i
  a
.checked = window.event.srcElement.checked; 

function checkItem(str) 

  var e = window.event.srcElement; 
  var all = eval("document.hrong."+ str); 
  if (e.checked) 
  { 
    var a = document.getElementsByName(e.name); 
    all.checked = true; 
    for (var i=0; i
    { 
      if (!a
.checked){ all.checked = false; break;} 
    } 
  } 
  else all.checked = false; 

</script> 

3.8 文件上传过程中判断文件类型 
  
  

  
  
  


fullscreen.htm  
  
  
  
  
<script?LANGUAGE="JAVASCRIPT1.2">   
   

  

</script>   
  

  
关闭 
  

  
登录 
  

  
用模态登录窗口 
  
  
  


login.htm  
  
  
  
  

  
     
     用户名:  
       
    
     
     密 码:  
       
    
     
       
       
    
  
  
  


自动关掉原窗口:  


  
  
  
  
 

 
 

 
 



关于两个网页刷新交互的问题  
JS处理方法:  

a.htm  

发表留言  
<script>??
alert("wwwwwwwwwwwwwwwwwwwwwwwwww");??
</script>   

b.htm  

<script?LANGUAGE="JAVASCRIPT">  
//window.opener.location.reload();刷新父窗口  
//window.opener.location="2.htm"//重定向父窗口到2.htm页  
function closewindow()  
{  
window.opener.location.reload();  
self.close();  
window.opener.document.write("sssssssssssssssssss");  
}  
</script>  
关闭  



后台处理方法:  

private btnForSubmit(Object sender,EventArgs e)  
{  
 .............  
 Response.Write(" <script>window.opener.document.execCommand('refresh');window.opener='';window.close();</script> ");  
//string str=" <script>window.opener.document.execCommand('refresh');window.opener='';window.close();</script> ";  
//this.RegisterStartupScript("mycode",str);  
external.m2_blocked()、external.m2_blocked()方法使用详解 

 Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如: 

  external.m2_blocked() (IE 4+ 支持) 
  external.m2_blocked() (IE 5+ 支持) 


 window.external.m2_blocked()方法用来创建一个显示HTML内容的模态对话框,由于是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。 
 window.external.m2_blocked()方法用来创建一个显示HTML内容的非模态对话框。 

 当我们用external.m2_blocked()打开窗口时,不必用window.close()去关闭它,当以非模态方式[IE5]打开时, 打开对话框的窗口仍可以进行其他的操作,即对话框不总是最上面的焦点,当打开它的窗口URL改变时,它自动关闭。而模态[IE4]方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动窗口的下面。 

使用方法如下: 
 vReturnValue = window.external.m2_blocked(sURL [, vArguments] [, sFeatures]) 
 vReturnValue = window.external.m2_blocked(sURL [, vArguments] [, sFeatures]) 
参数说明: 
 sURL 
 必选参数,类型:字符串。用来指定对话框要显示的文档的URL。 
 vArguments 
 可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。 
 sFeatures 
 可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。 
  dialogHeight 对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。 
   dialogWidth: 对话框宽度。 
   dialogLeft: 距离桌面左的距离。 
   dialogTop: 离桌面上的距离。 
   center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。 
   help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。 
   resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。 
   status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。 
  scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。 

  还有几个属性是用在HTA中的,在一般的网页中一般不使用。 
  dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。 
  edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。 
  unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。 

 传入参数: 
 要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如: 

 test1.htm 
 ==================== 
  <script>?
??var?mxh1?=?new?Array("mxh","net_lover","孟子E章")?
??var?mxh2?=?window.open("about:blank","window_mxh")?
??//?向对话框传递数组?
??window.external.m2_blocked("test2.htm",mxh1)?
??//?向对话框传递window对象?
??window.external.m2_blocked("test3.htm",mxh2)?
?</script>  

 test2.htm 
 ==================== 
  <script>?
??var?a?=?window.dialogArguments?
??alert("您传递的参数为:"?+?a)?
?</script>  

 test3.htm 
 ==================== 
  <script>?
??var?a?=?window.dialogArguments?
??alert("您传递的参数为window对象,名称:"?+?a.name)?
?</script>  

 可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如: 

 test4.htm 
 =================== 
  <script>?
??var?a?=?window.external.m2_blocked("test5.htm")?
??for(i=0;i
)?
?</script>  

 test5.htm 
 =================== 
  <script>?
?function?sendTo()?
?{?
??var?a=new?Array("a","b")?
??window.returnValue?=?a?
??window.close()?
?}?
?</script>  
  
 

    
 
 

 常见问题: 
 1,如何在模态对话框中进行提交而不新开窗口? 
 如果你 的 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe,提交时可以制定target为该iframe的name。对于IE4+,你可以用高度为0的frame来作:例子, 

 test6.htm 
 =================== 
  <script>?
??window.external.m2_blocked("test7.htm")?
?</script>  

 test7.htm 
 =================== 
 if(window.location.search) alert(window.location.search) 
   
   
    
  

 test8.htm 
 =================== 
   
   
   
  
  <script>?
?if(window.location.search)?alert(window.location.search)?
?</script>  
 2,可以通过
http://servername/virtualdirname/test.htm?name=mxh方式直接向对话框传递参数吗? 
 答案是不能。但在frame里是可以的。 
//屏蔽 F5 刷新键 


function document.onkeydown() 

    var k = window.event.keyCode; 
    if (k == 116)                   //屏蔽 F5 刷新键 
    { 
        window.event.keyCode    = 0; 
        window.event.returnValue= false; 
    } 



<script?LANGUAGE="JAVASCRIPT"> 
 //屏蔽鼠标右键、Ctrl+N、Shift+F10、F5刷新、退格键 
 //屏蔽F1帮助 
function window.onhelp() 

   return false 

function KeyDown() 

  //alert(event.keyCode); 
   //屏蔽 Alt+ 方向键 ← 屏蔽 Alt+ 方向键 → 
  if ((window.event.altKey)&&((window.event.keyCode==37)||(window.event.keyCode==39))) 
  {   
     //alert("不准你使用ALT+方向键前进或后退网页!"); 
     event.returnValue=false; 
  } 
  //屏蔽退格删除键,屏蔽 F5 刷新键,Ctrl + R 
  if ((event.keyCode==116)||(event.ctrlKey && event.keyCode==82)) 
  {  
     event.keyCode=0; 
     event.returnValue=false; 
  }  
   
  //屏蔽 Ctrl+n 
  if ((event.ctrlKey)&&(event.keyCode==78)) 
  {   
     event.returnValue=false; 
  } 
   
  //屏蔽 shift+F10 
  if ((event.shiftKey)&&(event.keyCode==121)) 
  {  
     event.returnValue=false; 
  } 
   
  //屏蔽 shift 加鼠标左键新开一网页 
  if (window.event.srcElement.tagName == "A" && window.event.shiftKey)  
  { 
    window.event.returnValue = false; 
  } 
       
   //屏蔽Alt+F4 
  if ((window.event.altKey)&&(window.event.keyCode==115)) 
  { 
      window.external.m2_blocked("about:blank","","dialogWidth:1px;dialogheight:1px"); 
      return false; 
  } 
   
  //屏蔽Ctrl+A 
  if((event.ctrlKey)&&(event.keyCode==65)) 
  { 
   return false; 
  } 
     

</script> 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xifo/article/details/158505

智能推荐

VTK图像读取与显示实例_开源学开源的博客-程序员秘密

png,bmp,jpg图像的读取与显示读取、显示 .jpg 图像:vtkJPEGReaderVS15+VTK7.0下console实例:#include VTK_MODULE_INIT(vtkRenderingOpenGL2);VTK_MODULE_INIT(vtkInteractionStyle);VTK_MODULE_INIT(vtkRenderingFreeType);V

APPScan安全扫描_apk安全扫描_归有故里的博客-程序员秘密

1、AppScan是IBM的一款web安全扫描工具,可以利用爬虫技术进行网站安全渗透测试,根据网站入口自动对网页链接进行安全扫描,扫描之后会提供扫描报告和修复建议等2、打开APPscan工具,创建扫描进行扫描配置填写起始页的URL填写好起始页后,APPscan会调用IE浏览器开始进行扫描停止扫描后,扫描到的URL会记录下来,此时可以导出,以便后面扫描使用,也可以直接进行扫描报告生成...

制作原生的Win10 PE 1809_win10 1809 中文语言包_逸天飞云的博客-程序员秘密

参考文章:https://blog.csdn.net/mfkbbdx1/article/details/84201692 https://blog.csdn.net/caoshiying/article/details/78341463步骤一:下载适用于Win10 1803 的 Windows ADK下载地址:微软官网点击“下载 ADK 的 Win...

程序员怎样才能写出一篇好的博客或者技术文章_pdsu_zhao的博客-程序员秘密

文章来源于 @justjavac在知乎上的邀请,要写在知乎上的回答。因为有原创,所以先首发,免得被伪原创。每天有大把的时间刷GitHub,写博客。从我大二的时候,大概六年前开始写技术博客,到现在已经有540+了,大概每年会写一百篇左右。这个答案由四部分组成:博客的流量来源不同文章类型的写作要点如何写博客如何收集写作的灵感流量来源首先,我将技术博客分为下面几种类型:

Android开发之 当前日期String类型转date类型 java代码中实现方法_程序员小冰的博客-程序员秘密

/** * 获取当前时间 * * @return */ public Date getDate(String str) { try { java.text.SimpleDateFormat formatter = new SimpleDateFormat( &quot;yyyy-MM-dd HH:mm:ss&quot;); date = formatter.parse(...

python函数算面积_面积函数python_weixin_39528219的博客-程序员秘密

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!前言矩形的面积 s = ab,只要知道任一矩形的的长和宽,就可以带入上式求得面积。 这样有什么好处呢? 一个公式,适用于全部矩形,一个公式,重复利用,减少了大脑的记忆负担。 像这类用变量代替不变量的思想在数学中称为函数,python中,也有类似的思想! 一、什么是函数在数学中,函数是...

随便推点

zookeeper是什么?Zookeeper分布式环境指挥官_zookeeper环境有什么用[email protected]架构的博客-程序员秘密

Zookeeper 概述ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。ZooKeeper框架最初是在“Yahoo!&quot;上构建的,用于以简单而稳健的方式访问他们的应用程序。 后来,Apache ...

终于完全解决了,关于Mail无法发送邮件的问题(转载)_weixin_30273763的博客-程序员秘密

转载自:http://www.maiyadi.com/thread-736278-1-1.html用Mail设置接受自己的企业邮箱,可以正常接受邮件,但经常无法发送,提示smtp服务器无法登陆,但有时有能登陆发送,被这个问题困扰了好久,搜了很多帖子,发现很多M.Y也都有这样的疑问,但却一直没能解决,今天咨询了我们的网管,加上自己的摸索,终于算完全解决这个问题了,特来跟大家分享。第一,如...

端口没被占用,但是zookeeper还是报错: Address already in use: bind的解决方案_阿夜!!的博客-程序员秘密

记录一次奇葩的zookeeper报错zookeeper报错:Address already in use: bind原先以为是2182端口被占用使用 下面命令查询后发现并没有进程占用此端口netstat -aon|findstr ':2181'查了N多东西后才发现是hyper-v占用了一堆端口查询命令:netsh interface ipv4 show excludedportrange protocol=tcp通过下面的命令修改保留的端口范围netsh int ipv4 set

hive使用中常见错误_starsky20的博客-程序员秘密

1.1. hive错误1.1.1.  hive2.3初始化mysql不起作用[[email protected]]# schematool -initSchema -dbType mysql--verboseMetastore connectionURL:   jdbc:derby:;databaseName=metastore_db;create=trueMetastor

php面包屑导航用到的,php 面包屑导航构建_澳洲的天好蓝的博客-程序员秘密

//通过分类id获取当前分类信息function get_category_by_category_id($id){$tbl_cat = TBL_PRE . "goods_category";//商品分类表$sql = "SELECT category_id,category_name,category_pid,depath,category_path,url_path,seo_info FROM...

linux添加开机自启脚本_linux增加开机启动脚本_优游涵养的博客-程序员秘密

自定义服务,通过Systemctl进行管理写好执行脚本,并保存到指定目录:#!/bin/sh... 脚本内容写好服务文件,文件名以 .service结尾,保存到/usr/lib/systemd/system/目录下面:简单点:[Unit]Description = test scripy # 描述[Service]Type=forking # 后台运行ExecStart=/root/test.sh # 该脚本的启动命令PrivateTmp=true # 独立分配临时空间

推荐文章

热门文章

相关标签