textarea实现maxlength的老问题
要求textarea实现maxlength,超出最大长度禁止输入。
附加条件
1。英文或是中文都可输入,一个中文字表示一个长度。
2。拷贝粘贴不可以超出长度,也不可以写到onkeyup方法里,如果写进onkeyup会一闪而过。
3。我之前试过判断输入的长度然后截取,发现当用微软拼音输入法的时候,测试长度为边界值的情况,输入汉字后会覆盖以前的内容,希望回答的方法充分测试这一点。
<textarea rows= "4 " cols= "30 " id=test
onkeypress=doKeypress()
onkeydown=doKeydown()
onbeforepaste=doBeforePaste()
onpaste=doPaste()
> </textarea>
<script language=javascript>
maxLength = 20
element=document.all[ "test "]
function doKeypress()
{
if(!isNaN(maxLength))
{
maxLength = parseInt(maxLength)
var oTR = element.document.selection.createRange()
if(oTR.text.length > = 1)
event.returnValue = true
else if(element.value.length > maxLength-1)
event.returnValue = false
}
}
function doKeydown()
{
setTimeout(function()
{
maxLength = parseInt(maxLength)
if(!isNaN(maxLength))
{
if(element.value.length > maxLength-1)
{
var oTR = window.document.selection.createRange()
oTR.moveStart( "character ", -1*(element.value.length-maxLength))
oTR.text = " "
}
}
},1)
}
function doBeforePaste()
{
if(!isNaN(maxLength))
event.returnValue = false
}
function doPaste()
{
if(!isNaN(maxLength))
{
event.returnValue = false
maxLength = parseInt(maxLength)
var oTR = element.document.selection.createRange()
var iInsertLength = maxLength - element.value.length + oTR.text.length
var sData = window.clipboardData.getData( "Text ").substr(0, iInsertLength)
oTR.text = sData;
}
}
</script>
学习ING~
MayAutumn(good good study && day day up)
对你的方法做了点修改
html代码里加了个onkeyup=doKeypress()
function doKeydown()里if(element.value.length > maxLength-1)
改称if(element.value.length > maxLength)
总的来说这个方法还算不错
还有个问题,function doKeydown()里为什么还要加上个
setTimeout呢?
附加条件
1。英文或是中文都可输入,一个中文字表示一个长度。
2。拷贝粘贴不可以超出长度,也不可以写到onkeyup方法里,如果写进onkeyup会一闪而过。
3。我之前试过判断输入的长度然后截取,发现当用微软拼音输入法的时候,测试长度为边界值的情况,输入汉字后会覆盖以前的内容,希望回答的方法充分测试这一点。
<textarea rows= "4 " cols= "30 " id=test
onkeypress=doKeypress()
onkeydown=doKeydown()
onbeforepaste=doBeforePaste()
onpaste=doPaste()
> </textarea>
<script language=javascript>
maxLength = 20
element=document.all[ "test "]
function doKeypress()
{
if(!isNaN(maxLength))
{
maxLength = parseInt(maxLength)
var oTR = element.document.selection.createRange()
if(oTR.text.length > = 1)
event.returnValue = true
else if(element.value.length > maxLength-1)
event.returnValue = false
}
}
function doKeydown()
{
setTimeout(function()
{
maxLength = parseInt(maxLength)
if(!isNaN(maxLength))
{
if(element.value.length > maxLength-1)
{
var oTR = window.document.selection.createRange()
oTR.moveStart( "character ", -1*(element.value.length-maxLength))
oTR.text = " "
}
}
},1)
}
function doBeforePaste()
{
if(!isNaN(maxLength))
event.returnValue = false
}
function doPaste()
{
if(!isNaN(maxLength))
{
event.returnValue = false
maxLength = parseInt(maxLength)
var oTR = element.document.selection.createRange()
var iInsertLength = maxLength - element.value.length + oTR.text.length
var sData = window.clipboardData.getData( "Text ").substr(0, iInsertLength)
oTR.text = sData;
}
}
</script>
学习ING~
MayAutumn(good good study && day day up)
对你的方法做了点修改
html代码里加了个onkeyup=doKeypress()
function doKeydown()里if(element.value.length > maxLength-1)
改称if(element.value.length > maxLength)
总的来说这个方法还算不错
还有个问题,function doKeydown()里为什么还要加上个
setTimeout呢?
posted on 2008-06-26 09:29 neil-zhao 阅读(2650) 评论(0) 编辑 收藏 举报