社区
JavaScript
帖子详情
郁闷:javascript动态显示textarea中输入的字符长度,超过制定长度要拦截住
i_need_mana
2007-05-11 08:45:36
动态显示textarea中输入的字符长度,超过制定长度要提示,
关键是要阻止新输入的内容,特别是粘贴的字符。
谢谢
...全文
1846
21
打赏
收藏
郁闷:javascript动态显示textarea中输入的字符长度,超过制定长度要拦截住
动态显示textarea中输入的字符长度,超过制定长度要提示, 关键是要阻止新输入的内容,特别是粘贴的字符。 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Kong Kong
2011-07-08
打赏
举报
回复
[Quote=引用 20 楼 joegu 的回复:]
<input name= " " type= "text " maxlength= "5 "> 你让它是多少就是多少,多了也写不进。
搞定
[/Quote] 见过SB的,没见过这么SB的。。。
joegu
2007-05-22
打赏
举报
回复
<input name="" type="text" maxlength="5">你让它是多少就是多少,多了也写不进。
搞定
sywj115447
2007-05-22
打赏
举报
回复
你可以去看看创力的留言系统
应该跟你的要求很相付
他那个系统,限制是500字符,跟手机短信类似,输入一个字就会相应的有一个数字显示
安迪
2007-05-22
打赏
举报
回复
那你说用户在你原来的文本内容中间输入新内容的话,也要找出来哪些是用户输入的?
yifuzhiming
2007-05-22
打赏
举报
回复
学习
i_need_mana
2007-05-22
打赏
举报
回复
还是没能解决,up
szsheng
2007-05-17
打赏
举报
回复
<textarea cols="100" rows="5" id="text" length="500"></textarea>
注意到了吗?页面中所有的 textarea 或 input 都可以加上 length属性,此例就是限制为500字的,当然了对粘贴也有用的(如果想超过的字符提示,在PressLength方法中加入相关代码)
具体使用如下:
加入前边如下javascript代码
function limitPaste(object,length)
{
length *= 2;
var tempLength = 0;
if(document.selection)
{
if(document.selection.createRange().parentElement().id == object.id)
{
tempLength = document.selection.createRange().text.len();
}
}
var tempValue = window.clipboardData.getData("Text");
tempLength = object.value.len() + tempValue.len() - tempLength;
if (tempLength > length)
{
tempLength -= length;
var tt="";
for(var i=0;i<tempValue.len()-tempLength;i++)
{
if(tt.len()<(tempValue.len()-tempLength))
tt=tempValue.substr(0,i+1);
else
break;
}
if(tt.len()<=0)
{
window.event.returnValue=false;
}
else
{
tempValue=tt;
window.clipboardData.setData("Text", tempValue);
window.event.returnValue = true;
}
}
}
function PressLength()
{
if(event.srcElement.type=="text" || event.srcElement.type=="textarea" )
{
if(event.srcElement.length!=null)
setMaxLength(event.srcElement,event.srcElement.length);
}
}
function LimitLength()
{
if(event.srcElement.type=="text" || event.srcElement.type=="textarea" )
{
if(event.srcElement.length!=null)
limitPaste(event.srcElement,event.srcElement.length);
}
}
document.documentElement.attachEvent('onkeyup', PressLength);
document.documentElement.attachEvent('onpaste', LimitLength);
JK_10000
2007-05-17
打赏
举报
回复
一个汉字算两个字符
---
改数据库就没必要一个汉字算两个字符:
sqlserver:varchar-->> nvarchar
oracle: varchar2--->> nvarchar2
chouchy
2007-05-17
打赏
举报
回复
<textarea cols="100" rows="5" id="text" onkeyup="limitInput()"></textarea><span id="tip"></span>
<script language="JavaScript">
<!--
var len=10;
var v="";
window.onload=function()
{
document.getElementById("tip").innerText="最多可以输入"+len+"个字符";
}
function limitInput()
{
obj=document.getElementById("text");
var reg=/[\u4E00-\u9FA5]/g;
var len2=obj.value.replace(reg,"??").length;
if(len2>len)
{
alert("你输入了"+len2+"个字符,最多可以输入"+len+"个字符(一个汉字算两个字符)。");
obj.value=v;
}
else
{
v=document.getElementById("text").value;//把内容存入v
document.getElementById("tip").innerText="你输入了"+v.replace(reg,"??").length+"个字符,还可以输入"+(len-v.replace(reg,"xx").length)+"个字符。";
}
}
//-->
</script>
JK_10000
2007-05-17
打赏
举报
回复
Only for IE:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>New Page 1</title>
</head>
<body>
<textarea maxLength="100" id=aaa style="width:500;height:300;" onbeforedeactivate="return checkMaxLength(this);" >
fds afdsa fdsa fdsa fdsa fdfds afdsa fdsa fdsa fdsa fdfds afdsa fdsa fdsa fdsa fdfds afdsa fdsa fdsa fdsa fdfds afdsa fdsa fdsa fdsa fdfds afdsa fdsa fdsa fdsa fd
</textarea>
<input type=button value="test before submit" onclick=" return checkMaxLength(document.getElementById('aaa'))">
</body>
</html>
<script>
/**
*checkMaxLength.
*JK 2006-11-26
*/
function checkMaxLength(textareaObj,maxLength)
{
if(maxLength == null) maxLength=textareaObj.getAttribute("maxLength");
if(maxLength == null) maxLength=1024;
var currentLength = textareaObj.value.length;
if (currentLength > maxLength) {
alert("The length of your input ("+currentLength+") is larger than the maxLength ("+maxLength+") .");
if(textareaObj.createTextRange){
var textRange=textareaObj.createTextRange();
textRange.moveStart('character',maxLength);
textRange.select();
}
else textareaObj.select();
textareaObj.focus();
return false;
}
return true;
}
</script>
JK_10000
2007-05-17
打赏
举报
回复
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>New Page 1</title>
</head>
<body>
<textarea maxLength="100" id=aaa style="width:500;height:300;">
fds afdsa fdsa fdsa fdsa fdfds afdsa fdsa fdsa fdsa fdfds afdsa fdsa fdsa fdsa fdfds afdsa fdsa fdsa fdsa fdfds afdsa fdsa fdsa fdsa fdfds afdsa fdsa fdsa fdsa fd
</textarea>
<input type=button value="test before submit" onclick=" return checkMaxLength(document.getElementById('aaa'))">
</body>
</html>
<script>
/**
*checkMaxLength.
*JK 2006-11-26
*/
function checkMaxLength(textareaObj,maxLength)
{
if(maxLength == null) maxLength=textareaObj.getAttribute("maxLength");
if(maxLength == null) maxLength=1024;
var currentLength = textareaObj.value.length;
if (currentLength > maxLength) {
alert("The length of your input ("+currentLength+") is larger than the maxLength ("+maxLength+") .");
if(textareaObj.createTextRange){
var textRange=textareaObj.createTextRange();
textRange.moveStart('character',maxLength);
textRange.select();
}
else textareaObj.select();
textareaObj.focus();
return false;
}
return true;
}
</script>
hy_lihuan
2007-05-17
打赏
举报
回复
3。不能只截取前端字符,因为用户有可能是在原文本的前面输入。
不知道什么意思;前面两个可以实现的
i_need_mana
2007-05-17
打赏
举报
回复
这个问题不会是无解吧!
up
Ischema
2007-05-12
打赏
举报
回复
oEvent.preventDefault()适用firefox;
onPropertyChang只适用IE;
onkeypress不能实现完全实时监控!
这个问题讨论过好多次了,像楼主这样更高的即时监控的要求似乎很难实现,
只有在提交后检测!
hhhhhnnnnn66
2007-05-12
打赏
举报
回复
onkeypress事件不是可以吗
产生一个字符,计算一次文本域的长度,当超过长度的时候,IE用return(false)阻止onkeypress就可以,firefox用oEvent.preventDefault()就可以
wangwei0406
2007-05-12
打赏
举报
回复
可不可以这样写,一开始显示可以输入的最大字符数,每当用户输入一个字符,显示可以输入的字符数就减1,这个数字到0了就不可以输入了,这样写可用性会好一点,用户一开始就知道可以输入多少个字符,也不用写多余的提示信息了。参考下面的代码:
function textCounter(field, countfield, maxlimit) {
// 定义函数,传入3个参数,分别为表单区的名字,表单域元素名,字符限制;
if (field.value.length > maxlimit) {
//如果元素区字符数大于最大字符数,按照最大字符数截断;
field.value = field.value.substring(0, maxlimit);
}else{
//在记数区文本框内显示剩余的字符数;
countfield.value = maxlimit - field.value.length;
}
//contentsample.innerHTML = field.value;
}
i_need_mana
2007-05-12
打赏
举报
回复
各位都没明白我的意思,1。我是要动态显示输入的文本长度。2。超出长度拦截并提示。3。不能只截取前端字符,因为用户有可能是在原文本的前面输入。
呵呵,大家再帮帮忙
yixianggao
2007-05-11
打赏
举报
回复
没必要弄那么复杂吧!
首先应该明确指出可输入的字符上限,在提交时用脚本检查即可!
完全没必要弄得太复杂,客户端如果禁用了脚本全白搭,哈
实话实说,LZ 请考虑!
adverse
2007-05-11
打赏
举报
回复
想楼上那样监听onpropertychange这个事件应该是可以.
mingxuan3000
2007-05-11
打赏
举报
回复
<TEXTAREA onpropertychange="c(this)" ></TEXTAREA >
function c(a){
if(a.value.length>5){
a.value=a.value.substr(0,5)
}
}
只简单考虑了下超过5个的字母的粘贴情况
TextArea
:用于操作文本的 Wakanda 小部件
文本区域小部件 允许您显示静态文本或数据源属性。 您可以格式化该值或为该值分配一个 URL(可以是静态的或动态的)。 特性 此小部件具有以下属性: ID : 唯一 ID 加载时隐藏:第一次加载页面时隐藏小部件。 值:要
输入
或显示的文本(静态文本或数据源属性)。 最大
长度
:指定此小部件
中
的最大
长度
(以
字符
为单位)。 占位符:当用户
输入
字符
时消失的占位符文本。 只读:定义文本
输入
是处于只读还是读/写模式。 Tabindex :定义页面上小部件的选项卡顺序。 标签:小部件的标签。 有关更多信息,请参阅章节。 活动 可以为此小部件
拦截
以下事件: :更改 :行动 :焦点和模糊 :单击时、双击时、鼠标按下时、鼠标移出时、鼠标悬停时和鼠标向上时 :触摸取消、触摸结束和触摸开始 有关更多信息,请参阅章节。 样式 您可以通过在“样式”选项卡
中
针对每个默认、悬停、活动、焦点和禁用状态进行更
精通AngularJS part1
编辑推荐 《精通AngularJS》指出AngularJS诞生于Google,已用于开发多款Google产品。它是一套
JavaScript
前端框架,用于开发当下流行的数据驱动的单页面Web应用。其核心特性是:MVC、模块化、自动双向数据绑定、语义化标签、依赖注入等。 作者简介 Pawel Kozlowski有15年以上的Web开发经验,接触过多种Web技术、语言和平台。他精通客户端和服务器端编程,并始终在寻找能提高生产率的工具和流程。Pawel是自由和开源软件的坚定支持者,他在AngularJS 社区非常活跃,为AngularJS项目贡献了大量的代码。他也对Angular UI (AngularJS的配套框架)有所贡献,并为AngularJS 提供了Twitter Bootstrap 相关的指令(directives)。不写代码时,Pawel 常在会议与活动上为AngularJS布道。 Peter Bacon Darwin已经积累了20年以上的编程经验,他在.NET发布之前,就已经用它工作了。他还对IronRuby的开发有所贡献。他曾在Avanade和IMGROUP做IT顾问。退休后,自由开发和照顾孩子占用了他大部分的时光。Peter是AngularJS社区的名人。他最近加入了Google的AngularJS团队。他还是Angular UI项目的创始成员。他曾在Devoxx UK和其他活动
中
发表过有关AngularJS的演讲,并开办过AngularJS的培训课程。他希望帮助企业更好地利用AngularJS。 目录 序1 第1章Angular之禅7 11邂逅AngularJS7 熟悉框架8 参与AngularJS项目8 社区8 在线学习资源9 库和扩展9 工具9 Batarang10 Plunker与jsFiddle10 IDE扩展和插件10 12AngularJS速成10 HelloWorld——AngularJS示例10 双向数据绑定12 AngularJS
中
的MVC模式12 鸟瞰13 深入作用域15 视图21 模块与依赖注入26 模块26 协作对象27 注册服务29 模块的生命周期33 模块依赖35 13AngularJS和其他框架38 jQuery与AngularJS39 苹果与橙子40 窥视未来41 14总结41 第2章构建与测试43 21介绍示例应用44 熟悉问题领域44 技术栈45 持久化存储46 MongoLab46 服务器端环境47 第三方
JavaScript
库48 BootstrapCSS48 22构建系统48 构建系统准则49 自动化所有事情49 尽早报错,清晰报错49 不同的工作流,不同的命令50 构建脚本同样是代码50 工具50 Gruntjs51 测试库与工具51 Jasmine51 Karmarunner52 23组织文件和目录52 根目录52 进入源代码目录54 AngularJS的特定文件54 轻装上路56 深入测试目录57 文件命名约定57 24AngularJS模块和文件57 一个文件,一个模块58 模块内部59 注册provider的不同语法59 声明配置和运行块的语法61 25自动化测试62 单元测试63 剖析Jasmine测试64 测试AngularJS对象65 测试服务65 测试控制器67 Mock对象和异步代码测试68 端对端测试70 日常工作流71 Karmarunner的提示与技巧72 执行测试子集73 调试73 26小结74 第3章与后端服务器通信75 31使用$http进行XHR和JSONP请求75 熟悉数据模型和MongoLabURLs76 $httpAPI快速导览76 配置对象说明77 转换请求数据78 处理HTTP响应79 转换响应数据79 处理同源政策约束79 利用JSONP克服同源政策约束80 JSONP的限制81 利用CORS克服同源政策约束81 服务器端代理83 32promiseAPI与$q84 工作
中
的promise和$q服务85 学习$q服务的基础知识85 promise是第一类
JavaScript
对象87 聚合回调88 注册回调和承诺的生命周期88 异步动作的链式调用89 关于$q的其他91 AngularJS
中
的$q集成93 33promiseAPI与$http94 34与RESTful端点通信95 $resource服务95 构造级与实例级方法97 $resource创建异步方法100 $resource服务的限制101 使用$http自定
HTML必知必会精讲
本课程《HTML必知必会精讲》详细讲述了HTML必备知识点,内容包括:HTML概述、HTML规范、HTML思想、HBuilder工具的介绍和使用、常见标签(字体font标签、加粗b标签、下划线u标签、删除线s标签、字体倾斜i标签、上标sup标签和下标sub标签、注释标签、标题h1标签、水平线hr标签、特殊
字符
、列表标签)、图片img标签、HTML
中
的路径问题讨论(绝对路径和相对路径)、pre标签和p标签、超链接a标签、表格table标签、表单form标签(文本
输入
框text,密码
输入
框password,单选
输入
框radio,复选
输入
框checkbox,文本域
textarea
,文件上传项file,提交按钮submit,恢复按钮reset,普通按钮button,下拉
输入
框select,隐藏项hidden)、div和span标签、元标签meta、base标签、link标签、页面框架标签frameset。课程特色:所有内容均详细演示使用步骤和细节,全程手写代码,零基础都可轻松掌握!
如何限制
TEXTAREA
控件的
输入
数据
长度
下面的代码可以参考一下: 一 我们知道文本框可以有一个为maxlength的属性,可以限制文本框的
长度
,当时备注框
textarea
却没有,那么 要怎样限制备注框的
长度
呢?其实很简单,只有加上想这样一句话onKeyDown='if (this.value.length>=20){event.returnValue=false}' 就可以了,整个写法如下: =20){event.return
el-
textarea
禁止
输入
换行
el-input/>
JavaScript
87,907
社区成员
224,614
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章