js行号显示的文本框实现效果(兼容多种浏览器 )


Posted in Javascript onOctober 23, 2015

利用js打造的一个非常实用简易的文本编辑框,可以显示行号并且同时兼容ie和firefox等主流浏览器,如下效果图:

js行号显示的文本框实现效果(兼容多种浏览器 )

以下是该效果的源码:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
<title>显示行号的文本框效果,兼容ie、火狐等浏览器</title> 
<style type="text/css"> 
#main{color:#666} 
textarea{border:1px solid #7f9db9;font-size:9pt;width:430px;color:#000} 
.grey{color:#999} 
#msg1,#msg2,#msg3,#msg4{ display:none} 
#ol{position:absolute;z-index:1;padding:0px;margin:0px;border:0px;background:#ecf0f5;width:23px;text-align:left; } 
#li{background:#ecf0f5;height:160px;overflow:hidden;width:32px;border-right:0;line-height:20px;margin:0px;padding:0px;text-align:center} 
#c2{font-family:Arial, Helvetica, sans-serif;height:160px; margin:0px; width:416px;padding:0 0 0 35px;overflow-x: hidden;line-height:20px;} 
</style> 
<script type="text/javascript"> 
String.prototype.trim2=function(){ 
  return this.replace(/(^\s*)|(\s*$)/g, ""); 
} 
function F(objid){ 
  return document.getElementById(objid).value; 
} 
function G(objid){ 
  return document.getElementById(objid); 
} 
</script> 
</head> 
<body onLoad="keyUp();"> 
<div> 
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="position:relative"> 
 <tr> 
  <td width="55%"> 
  <div id="ol"><textarea cols="2" rows="10" id="li" disabled></textarea></div> 
  <textarea name="co" cols="60" rows="10" wrap="off" id="c2" onblur="check('2')" onKeyUp="keyUp()" onFocus="clearValue('2')" onscroll="G('li').scrollTop=this.scrollTop;" oncontextmenu="return false" class="grey">请在这里粘入多段字看一看。 
</textarea>   
  </td> 
  </tr> 
</table> 
</div> 
<em class="block" id="msg2">文本框没有内容。</em> 
<script type="text/javascript"> 
var msgA=["msg1","msg2","msg3","msg4"]; 
var c=["c1","c2","c3","c4"]; 
var slen=[50,20000,20000,60];//允许最大字数 
var num="";
var isfirst=[0,0,0,0,0,0]; 
function isEmpty(strVal){ 
 if( strVal=="" ) 
 return true; 
 else 
 return false; 
} 
function isBlank(testVal){  
  var regVal=/^\s*$/; 
  return (regVal.test(testVal)) 
} 
function chLen(strVal){ 
 strValstrVal=strVal.trim2(); 
 var cArr=strVal.match(/[^\x00-\xff]/ig); 
  return strVal.length+(cArr==null ? 0 : cArr.length);  
} 
function check(i){ 
 var iValue=F("c"+i); 
 var iObj=G("msg"+i); 
 var n=(chLen(iValue)>slen[i-1]); 
 if((isBlank(iValue)==true)||(isEmpty(iValue)==true)||n==true){  
 iObj.style.display ="block"; 
 }else{  
 iObj.style.display ="none"; 
 } 
} 
function checkAll(){ 
 for(var i=0;i<msgA.length;i++){ 
 check(i+1); 
 if(G(msgA[i]).style.display=="none"){ 
  continue; 
 }else{ 
  alert("填写错误,请查看提示信息!"); 
  return; 
 } 
 } 
 G("form1").submit(); 
} 
function clearValue(i){ 
 G(c[i-1]).style.color="#000"; 
 keyUp(); 
 if(isfirst[i]==0){ 
 G(c[i-1]).value=""; 
 } 
 isfirst[i]=1; 
} 
function keyUp(){ 
 var obj=G("c2"); 
 var str=obj.value; 
 strstr=str.replace(/\r/gi,""); 
 strstr=str.split("\n"); 
 n=str.length; 
 line(n); 
} 
function line(n){ 
 var lineobj=G("li"); 
 for(var i=1;i<=n;i++){ 
 if(document.all){ 
  num+=i+"\r\n"; 
 }else{ 
  num+=i+"\n"; 
 } 
 } 
 lineobj.value=num; 
 num=""; 
} 
function autoScroll(){ 
 var nV=0; 
 if(!document.all){ 
 nV=G("c2").scrollTop; 
 G("li").scrollTop=nV; 
 setTimeout("autoScroll()",20); 
 } 
} 
if(!document.all){ 
window.addEventListener("load",autoScroll,false); 
} 
</script> 
</body> 
</html>

以上就是javascript如何实现行号显示的文本框效果的源代码,希望对大家的学习有所帮助。

Javascript 相关文章推荐
JS是否可以跨文件同时控制多个iframe页面的应用技巧
Dec 16 Javascript
JavaScipt基本教程之JavaScript语言的基础
Jan 16 Javascript
IE8下String的Trim()方法失效的解决方法
Nov 08 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
浅谈js中对象的使用
Aug 11 Javascript
Jquery实现上下移动和排序代码
Oct 17 Javascript
AngularJS入门示例之Hello World详解
Jan 04 Javascript
微信小程序 video详解及简单实例
Jan 16 Javascript
ES6 javascript的异步操作实例详解
Oct 30 Javascript
Mac中安装nvm的教程分享
Dec 11 Javascript
详解html-webpack-plugin用法全解
Jan 22 Javascript
vue和better-scroll实现列表左右联动效果详解
Apr 29 Javascript
js中对函数设置默认参数值的3种方法
Oct 23 #Javascript
js窗口关闭提示信息(兼容IE和firefox)
Oct 23 #Javascript
javascript跨域的方法汇总
Oct 23 #Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
Oct 23 #Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
Oct 23 #Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
Oct 23 #Javascript
深入浅析javascript立即执行函数
Oct 23 #Javascript
You might like
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
JavaScript实用技巧(一)
2010/08/16 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
jQuery序列化表单成对象的简单实现
2016/11/29 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
如何使用Python脚本实现文件拷贝
2019/11/20 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
python实现同一局域网下传输图片
2020/03/20 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
篮球比赛拉拉队口号
2014/06/10 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
安全生产学习心得体会
2016/01/18 职场文书
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫
windows server2008 开启端口的实现方法
2022/06/25 Servers