放在标签里, 你自己做<TEXTAREA maxlength=150 onkeyup="mm(this)"></TEXTAREA> <label id=show></label><SCRIPT LANGUAGE="JavaScript"> String.prototype.lenB = function() { return this.replace(/[^\x00-\xff]/g,"**").length; } function mm(e) { var max = e.maxlength; //注意maxlength大小写对应 var len = e.value.lenB(); var n = max-len; var str = "<font "+ (n>0?"":"color=red") +">你还可以输入 "+ n +" 个字!</font>"; document.getElementById("show").innerHTML = str; } </SCRIPT>
to: meizz(梅花雪 封闭开发中) 我现在这样写:<form id="Form1" method="post" runat="server"> <div id="show"></div><TEXTAREA maxlength="150" onkeyup="mm(this,'Textarea1')" runat="server" id="txt" style="WIDTH: 452px; HEIGHT: 186px" rows="11" cols="54"></TEXTAREA> <TEXTAREA runat="server" id="Textarea1" NAME="Textarea1" style="Z-INDEX: 101; LEFT: 10px; POSITION: absolute; TOP: 259px"></TEXTAREA><SCRIPT LANGUAGE="JavaScript"> String.prototype.lenB = function() { return this.replace(/[^\x00-\xff]/g,"**").length; } function mm(e,Textarea1) { var max = e.maxlength; //注意maxlength大小写对应 var len = e.value.lenB(); var n = max-len; var str = "<font "+ (n>0?"":"color=red") +">你还可以输入 "+ n +" 个字!</font>"; document.getElementById("show").innerHTML = str; window.document.all[Textarea1].value =document.getElementById("show").innerHTML; } </SCRIPT></form>请指出如何改进最后一句 window.document.all[Textarea1].value =document.getElementById("show").innerHTML; 另外,“asp:TextBox id="TextBox1"” 和“TEXTAREA”有何不同?
<asp:TextBox TextMode="MultiLine"></asp:TextBox> 这种多行模式的文本框在客户端HTML代码里就是 textarea 而没有设置多行模式的文本框在客户端生成的是<input type="text">function mm(e,Textarea1) { var max = e.maxlength; //注意maxlength大小写对应 var len = e.value.lenB(); var n = max-len; var e = document.forms[0].elements[Textarea1]; e.style.color = n>0 ? "" : "red"; e.value = "你还可以输入 "+ n +" 个字!"; }在文本域里是不能直接用HTML标签指定字体颜色的
<!--
function bb()
{
document.getElementById("Label1").innerText = document.getElementById("TextBox1").value.length;
setTimeout("bb()",10);
}
//-->
</script><asp:TextBox onkeypress=bb(this) Width="100%" id="TextBox1" runat="server" TextMode="MultiLine" Height="100%"></asp:TextBox>
function changeHints(){
var l=strlength(document.frmAnnounce.subject.value)
if (l<=100) {
if (document.all!=null) document.all("hints").innerHTML="还可以输入"+(100-l)+"字节"
}
else{
if (document.all!=null) {
document.all("hints").innerHTML="<font color=red>输入的字节数超出100字节</font>"
}
}
return true
}
</script>
<input type="text" name="subject" maxlength="255" size="40" value="" onKeyDown="return changeHints()" onKeyUp="return changeHints()"> (<span id="hints" color="red">还可以输入100字节</span>)
<input type="text" name="num" onblur="count()">
<input type="text" name="num1" onblur="count()">
<input type="text" name="num2" >
</form><script language='javascript'>
function count()
{
document.test.num2.value=document.test.num.value + document.test.num1.value;
}
</script>
然后textarea内onkeydown内计算现在还剩几个字符...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="gb2312" lang="gb2312">
<head>
<title> New Document </title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="title" content="" />
<meta name="author" content="活靶子,Huobazi,www.AspxBoy.com" />
<meta name="subject" content="" />
<meta name="language" content="gb2312" />
<meta name="keywords" content="" />
<meta name="Copyright" content="www.AspxBoy.com" />
<meta name="robots" content="all" />
<SCRIPT language=JavaScript src="/js/msgindex.js"></SCRIPT><SCRIPT language=JavaScript>
<!--
function selectmsg(str)
{
document.formscsend.message.value = str;
onCharsChange(document.formscsend.message);
document.formscsend.message.focus();
document.formscsend.message.select();
} function inputs(str)
{
document.formscsend.message.value=document.formscsend.message.value+str;
onCharsChange(document.formscsend.message);
document.formscsend.message.focus();
}
function onCharsChange(varField) {
var leftChars = getLeftChars(varField);
if ( leftChars >= 0) {
document.formscsend.charsmonitor.value=leftChars;
return true;
} else {
document.formscsend.charsmonitor.value="0";
window.alert("最多只能输入140个字符! ");
var len = document.formscsend.message.value.length + leftChars;
document.formscsend.message.value = document.formscsend.message.value.substring(0, len);
leftChars = getLeftChars(document.formscsend.message);
if ( leftChars >= 0) {
document.formscsend.charsmonitor.value=leftChars;
}
return false;
}
} function getLeftChars(varField) {
var i = 0;
var counter = 0;
var cap = 140; for (i = 0; i< varField.value.length; i++) {
if (varField.value.charCodeAt(i) > 127 || varField.value.charCodeAt(i) == 94) {
cap = 70;
}
}
var leftchars = cap - varField.value.length;
return (leftchars);
}
//--></SCRIPT>
</head>
<body>
<form name="formscsend">
剩余字符: <input name=charsmonitor style="border:none;" tabindex=100 value=140 e=5 readonly>
<br />
<TEXTAREA
onpaste="return onCharsChange(this);"
onkeyup="return onCharsChange(this);"
tabIndex=1 name=message
onchange="return onCharsChange(this);"
cols="32" rows="6" class="font1"
></TEXTAREA> </form></body>
</html>
<SCRIPT language=JavaScript src="/js/msgindex.js"></SCRIPT>
可以去掉了
{
label.text = (150-textbox.text.length).ToString();//这里不一定是这样,转为string即可。
}
你的代码可行。
但有提示“未能找到任何属性onpaste”。
你的代码如果我改成<form name="formscsend" runat=server>会出错。
to: gsxzm(肖明)
你的这个方法不是“实时”的啊
<TEXTAREA maxlength=150 onkeyup="mm(this)"></TEXTAREA>
<SCRIPT LANGUAGE="JavaScript">
String.prototype.lenB = function()
{
return this.replace(/[^\x00-\xff]/g,"**").length;
}
function mm(e)
{
var max = e.maxlength; //注意maxlength大小写对应
var len = e.value.lenB();
document.getElementById("show").innerText = "你还可以输入 "+ (max-len) +" 个字!";
}
</SCRIPT>
谢谢。我要的就是这种效果。
但能不能改进一点点。就是让“你还可以输入xx字”显示在一个标签里,并且为负数的时候字体变红?
谢谢指点。
<input type="text" name="num" onblur="count()">
<input type="text" name="num1" onblur="count()">
<input type="text" name="num2" >
</form><script language='javascript'>
function count()
{
document.test.num2.value=document.test.num.value + document.test.num1.value;
}
</script>
<label id=show></label><SCRIPT LANGUAGE="JavaScript">
String.prototype.lenB = function()
{
return this.replace(/[^\x00-\xff]/g,"**").length;
}
function mm(e)
{
var max = e.maxlength; //注意maxlength大小写对应
var len = e.value.lenB();
var n = max-len;
var str = "<font "+ (n>0?"":"color=red") +">你还可以输入 "+ n +" 个字!</font>";
document.getElementById("show").innerHTML = str;
}
</SCRIPT>
我现在这样写:<form id="Form1" method="post" runat="server">
<div id="show"></div><TEXTAREA maxlength="150" onkeyup="mm(this,'Textarea1')" runat="server" id="txt" style="WIDTH: 452px; HEIGHT: 186px" rows="11" cols="54"></TEXTAREA> <TEXTAREA runat="server" id="Textarea1" NAME="Textarea1" style="Z-INDEX: 101; LEFT: 10px; POSITION: absolute; TOP: 259px"></TEXTAREA><SCRIPT LANGUAGE="JavaScript">
String.prototype.lenB = function()
{
return this.replace(/[^\x00-\xff]/g,"**").length;
}
function mm(e,Textarea1)
{
var max = e.maxlength; //注意maxlength大小写对应
var len = e.value.lenB();
var n = max-len;
var str = "<font "+ (n>0?"":"color=red") +">你还可以输入 "+ n +" 个字!</font>";
document.getElementById("show").innerHTML = str;
window.document.all[Textarea1].value =document.getElementById("show").innerHTML;
}
</SCRIPT></form>请指出如何改进最后一句
window.document.all[Textarea1].value =document.getElementById("show").innerHTML;
另外,“asp:TextBox id="TextBox1"” 和“TEXTAREA”有何不同?
这种多行模式的文本框在客户端HTML代码里就是 textarea
而没有设置多行模式的文本框在客户端生成的是<input type="text">function mm(e,Textarea1)
{
var max = e.maxlength; //注意maxlength大小写对应
var len = e.value.lenB();
var n = max-len;
var e = document.forms[0].elements[Textarea1];
e.style.color = n>0 ? "" : "red";
e.value = "你还可以输入 "+ n +" 个字!";
}在文本域里是不能直接用HTML标签指定字体颜色的