首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

JS控制多行文本框的行数和最多输入字符数解决思路

2012-03-24 
JS控制多行文本框的行数和最多输入字符数ASP.NETMSDN说明如何:为 TextBox Web 服务器控件指定多行输入更新

JS控制多行文本框的行数和最多输入字符数
ASP.NET MSDN说明
如何:为 TextBox Web 服务器控件指定多行输入

更新:2007 年 11 月

多行 TextBox 控件允许用户在支持自动换行和水平及垂直滚动的框中键入信息。

创建多行 TextBox Web 服务器控件
将 TextBox 控件的 TextMode 属性设置为 Multiline。在代码中,使用 TextMode 枚举设置文本模式。

通过设置下列属性来设置控件的大小: 

将 Width 设置为以像素为单位的值,或将 Columns 设置为要显示的字符数。

将 Height 设置为以像素为单位的值,或将 Rows 设置为行数。

说明: 
Height 和 Width 属性不适用于不支持级联样式表 (CSS) 样式的浏览器。
 

设置这些属性并不会限制用户可以输入的字符数或行数,而只是限制了所显示的字符数或行数。控件将始终显示垂直滚动条。Height 和 Width 优先于 Rows 和 Columns。

说明: 
默认情况下,多行 TextBox 控件将包含一个垂直滚动条。若要隐藏该滚动条,请包括样式属性 overflow: hidden。例如,在 HTML 视图中,控件的声明性语法会是下面这样:
 
复制代码 
<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 56px; OVERFLOW: hidden; POSITION: absolute; TOP: 72px" runat="server" TextMode="MultiLine"></asp:TextBox>
通过设置控件的 Wrap 属性来设置自动换行行为。如果设置为 true,文本将会自动换行(不会嵌入回车/换行符)。如果设置为 false,则文本不换行,用户必须按 Enter 来开始新行,这将嵌入回车/换行符。将 Wrap 属性设置为 false 将使控件显示水平滚动条。

说明: 
MaxLength 属性在多行文本框中不起作用。
 -------------------------------------------------------------------
这个是从网上找到的,大部分就这样的
<script type="text/javascript">
  function CheckLength(obj,maxLength,lines)
  {
  if(obj.value.length > maxLength)
  {
  alert('请确保文本框输入的内容最大长度为'+maxLength+'个字符,超出部分将自动截断!');
  obj.value=obj.value.substring(0,maxLength-1);
  }
  var arr = obj.value.split("\n");
  if(arr.length > lines)
  {
  var value="";
  alert('请确保文本框输入的内容最大行数为'+lines+',超出部分将自动截断!');
  for(loop=0;loop<lines;loop++)
  {
  if(loop != lines -1)
  value=value + arr[loop] + "\n";
  else
  value = value + arr[loop];
  }
  obj.value = value;
  }
  }


<asp:TextBox ID="txtFirProblem" runat="server" TextMode="MultiLine" Height="230px" Rows="8"></asp:TextBox><br />

  CS代码如下:
 this.txtFirProblem.Attributes.Add("onKeyDown", "CheckLength(this,318,8);");
 this.txtFirProblem.Attributes.Add("onKeyUp", "CheckLength(this,318,8);");
这个考虑不到 复制粘贴 情况  
请问csdn的高手们,谁有完美版本的哦?
--------------------------------------------------
另一个方法
<textarea id=txt style="width: 300; height: 100"></textarea><br>  
  <input type=button value="最大只留三行" onclick="mmm(3)">  
  <SCRIPT LANGUAGE="JavaScript">  
  function mmm(n)  
  {  
  var s = document.all.txt.value;  
  var a = s.match(/[^\n]+(\n|$)/g);  
  var result = "";  
  if(a)  
  {  
  for(var i=0; i<n; i++) result += a[i];  
  }  
  document.all.txt.value = result;  
  }  
  </SCRIPT>
这个只能匹配硬回车哦。。。如果是自动回行的就不行了
---------------------------------------
大家帮帮我吧,不好发的话 ,我邮箱
tww382233701@126.com 收到给分啊。
或者有更好的方法的,谢谢大家了



[解决办法]
http://www.css88.com/demo/textarea-num-chack/textarea-num-chack1.html



看下这个demo!!
[解决办法]
1楼好例子
[解决办法]
var obj = document.getElementById("txt");
var o=obj.createTextRange().getClientRects();
var lines = o.length;
if(lines>3){}

if(obj.value.length > 400){}

http://topic.csdn.net/u/20090131/17/0cb9774b-3999-47ca-8671-e9f3d94c360c.html
[解决办法]
可以预留一个HTML Node来显示结果。

onkeydown事件 绑定一个计数函数。
[解决办法]

JScript code
<textarea id="ta" name="ta" rows="6" cols="50" onKeyDown='if (this.value.length>=20){if(event.keyCode != 8)event.returnValue=false;}'></textarea>
[解决办法]
HTML code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML> <HEAD>  <TITLE> New Document </TITLE>  <META NAME="Generator" CONTENT="EditPlus">  <META NAME="Author" CONTENT="">  <META NAME="Keywords" CONTENT="">  <META NAME="Description" CONTENT="">  <script type="text/javascript">    function InitTextarea()  {     var ob = document.getElementById('txt');    ob.rows=100;    ob.onblur=function(){        if(ob.value.length>20)        {            alert('超过长度');        }    };  } </HEAD> <BODY onload="InitTextarea()">  <textarea id="txt"  cols='100' ></textarea> </BODY></HTML> 

热点排行