用JS怎样解决多行文本域字符限制功能,要达到单行文本框限制字符的效果;输满规定字字符个数后不能再出现

用substring截的我知道,不足的地方是最后输满限制字符数后还是能输,只是截取了前N个规定字符数重新赋过去;虽然最后显示字符个数是规定数量,但是输入的时候还是能看到超... 用substring截的我知道,不足的地方是最后输满限制字符数后还是能输,只是截取了前N个规定字符数重新赋过去;虽然最后显示字符个数是规定数量,但是输入的时候还是能看到超出的部分。 展开
 我来答
190276134
2011-11-14 · 超过55用户采纳过TA的回答
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:146万
展开全部
这样:
<textarea oninput="s()" onpropertychange="s()"></textarea>
function s(){
var leng=要限制的字符数
if(this.value.lengtg>=leng){
//加一个限制,达到更强劲的效果
event.returnValue=false; //达到指定字数后,任何按键都失效。
//截取字符串
this.value=this.value.substring(0,leng);
}
}

因为onpropertychange只在IE中有效,而oninput在大多数浏览器中都有效,所以两个一起上。
缓步莫迟疑C
2011-11-14 · TA获得超过1.1万个赞
知道大有可为答主
回答量:6217
采纳率:73%
帮助的人:6410万
展开全部
使用onkeypress事件(或onkeyup或onkeydown)和onbeforepaste事件,在事件函数里检查文本框内容长度,如果超长, 就将event.keycode设为0,对于onbeforepaste事件就停止粘贴.

也可只使用onpropertychange事件.对超长内容截断

前面的方法可在新字符被录入前就被阻止,后一种方法会一闪而过,但也可以达到你想要的效果.
给你一个onpropertychange的例子
<body>
只能输10个字<br>
<textarea onpropertychange="javascript:if(this.value.length>10)this.value=this.value.substr(0,10);"></textarea>
</body>
追问
onkeypress事件和onkeyup,onkeydown都不行,到不到效果、请参见”百度知道“提问里的字数限制,按住一个键不放后你可以明显看到输入的内容被截
追答
试试我给你的那个例子.其实并不是onkeydown不行,而是如果用这个,代码会比较长.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
darkminded
2011-11-15 · TA获得超过281个赞
知道答主
回答量:72
采纳率:0%
帮助的人:92.1万
展开全部
你直接<textarea maxlength="999" /></textarea>不方便吗?

补充: 操, 服了IE了...
window.onload = function() {
var txts = document.getElementsByTagName('textarea');
for (var i = 0, l = txts.length; i < l; i++) {
if (/^[0-9]+$/.test(txts[i].getAttribute("maxlength"))) {
var func = function() {
var len = parseInt(this.getAttribute("maxlength"), 10);
if (this.value.length > len) {
this.value = this.value.substr(0, len);
return false;
}
}
txts[i].onkeyup = func;
txts[i].onblur = func;
}
}
}
然后直接用<textarea maxlength="999" /></textarea>的方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wucong60
2011-11-14 · TA获得超过251个赞
知道小有建树答主
回答量:230
采纳率:0%
帮助的人:167万
展开全部
<body>
<textarea id="txt_input" rows="2" onkeydown="msg.innerText=this.value.length+'字';if(this.value.length>9) return false;"></textarea><br/><span id='msg'></span>
</body>
追问
onkeydown不行,请参见”百度知道“提问里的字数限制,按住一个键不放
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
文江博客
2011-11-14 · TA获得超过257个赞
知道小有建树答主
回答量:569
采纳率:50%
帮助的人:360万
展开全部
用onchenge事件监听文本框的字符串的长度,大于一定的值就……
你懂的
追问
onchenge貌似是失去焦点才会触发,输入的时候需要动态获取剩余字数。例如”百度知道“里提问
追答
看字面也该知道意思咯
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式