用JS怎样解决多行文本域字符限制功能,要达到单行文本框限制字符的效果;输满规定字字符个数后不能再出现
用substring截的我知道,不足的地方是最后输满限制字符数后还是能输,只是截取了前N个规定字符数重新赋过去;虽然最后显示字符个数是规定数量,但是输入的时候还是能看到超...
用substring截的我知道,不足的地方是最后输满限制字符数后还是能输,只是截取了前N个规定字符数重新赋过去;虽然最后显示字符个数是规定数量,但是输入的时候还是能看到超出的部分。
展开
5个回答
展开全部
这样:
<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在大多数浏览器中都有效,所以两个一起上。
<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在大多数浏览器中都有效,所以两个一起上。
展开全部
使用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>
也可只使用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不行,而是如果用这个,代码会比较长.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你直接<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>的方法
补充: 操, 服了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>的方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<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>
<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不行,请参见”百度知道“提问里的字数限制,按住一个键不放
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用onchenge事件监听文本框的字符串的长度,大于一定的值就……
你懂的
你懂的
追问
onchenge貌似是失去焦点才会触发,输入的时候需要动态获取剩余字数。例如”百度知道“里提问
追答
看字面也该知道意思咯
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询