<textarea onblur="alert(this.value.split('\n').length+'行')"></textarea>

解决方案 »

  1.   

    这个不行!
    我的Textarea是自动换行的!这个只能检查出“段落”
      

  2.   

    <textarea style="overflow-y:hidden" row=1 onscroll="this.rows++" onblur="alert(this.rows)"></textarea>
      

  3.   

    应该能实现,可是有点麻烦,没空给你做出来。给你看看这个吧,自己试试看:http://www.blueidea.com/bbs/NewsDetail.asp?id=603197
      

  4.   

    谢谢emu_ston(人笨,是一辈子的事)。我今晚仔细分析一下。那个真的以前没见过。有没有已经做好的呢?可以贴代码。^_*
      

  5.   

    我试过了,不行的。因为this.style.height那个值只是在在设计时的高度。如果TextArea的高度变了(自动)了,还是设计时的那个值。
      

  6.   

    当然不要用这个
    用this.offsetHeight,这个才是当前高度
      

  7.   

    加上wrap="hard"不是每行都有换行符了吗
      

  8.   

    谢谢,这个高度的问题算是解决了。
    接下来的问题是:我如何得到前30行的文本?就是说,前30行文本的长度是多少?这样,才能分页。另外,为什么我向文本框输入内容(手工输入或贴粘),没有激活onChange=""事件啊?我该怎样知道里面的文本是否?在在哪个事件?onKeyPress="alert(this.offsetHeight)"   控制键没有激活。onKeyDown="alert(this.offsetHeight)"   Ctrl+V/X没有激活
      

  9.   

    onpropertychange才对,onchange要离开,且内容改变才会触发
      

  10.   

    <textarea onpropertychange=this.style.pixelHeight=this.scrollHeight onblur=alert(value.substring(0,cols*30))></textarea>
      

  11.   

    通过this.offsetHeight我已经能算出行数了。现在的问题是:我该怎样取出这前30行的文本?应该在哪个事件里面处理?(情况包括:输入、删除、修改、粘贴、剪切...)
      

  12.   

    fason(阿信),对不起,还要再打扰一次:<textarea onpropertychange=this.style.pixelHeight=this.scrollHeight onblur=alert(value.substring(0,cols*30))>上面这个我还是不能理解。在<textarea>中,我可以设定line-height来处理行的高度。然后,如果this.offsetHeight>LineHeight*最大行数就认为大于最大行数。问题是:因为中英文文字的不同和换行等情况。无法通过不知道前三30行.用cols*30是取不出来的。~-~
      

  13.   

    很对不起,我还是不能完整的解决.
    <textarea onpropertychange=this.style.pixelHeight=this.scrollHeight onblur="document.write(value.replace(/\n/g,'|').substring(0,cols*30))"></textarea>
    另求高手
      

  14.   

    试试
    <script>
    i=0;j=0;
    myData="据可靠消息透露,李铁年底永久转会英超埃弗顿俱乐部一事已经几乎成为定局。辽足俱乐部在此期间几乎拒绝了所有欧洲俱乐部“挖埃弗顿墙脚”的请求。一位负责人表示,这完全是为李铁在英超的发展考虑。李铁在埃弗顿俱乐部打拼的效果非常明显,尽管他与欧洲球员还存在一定的差距,但他的发展潜力和额外的商业价值引起了欧洲几家俱乐部的注意。由于李铁连续在英超联赛中代表埃弗顿队首发出场,所以在埃弗顿俱乐部与李铁个人签署的工资合同中,李铁的收入也大幅度上升,已经可以达到周薪1万英镑的水平。而辽足俱乐部与埃弗顿俱乐部签署的转会合同当中,李铁年终的永久转会费也将随着李铁出场次数的增加而水涨船高。前不久,来自西班牙的毕尔巴鄂竞技俱乐部等几个欧洲球会都找上门来洽谈关于收购李铁的事宜,其中还有人提出了160万英镑的转会合同(本报曾在10月23日的相关报道中详细披露过此事)。而这些接触是在绝对保密的状态下进行的。但是没有不透风的墙,埃弗顿俱乐部在得知此事后很快就作出了反应,并表示愿意提前和辽足俱乐部完成李铁的永久国际转会。据有关人士透露,在此期间,埃弗顿俱乐部还曾经找到李铁本人试探口风,问其对俱乐部和球队的看法等等。而英国人对球员的两个方面最为反感,一是在球场上假摔,另一个就是在球队里三心二意。刚刚在英超看到一点前景的李铁随即便找到俱乐部有关负责人表达了自己的看法,他认为自己的能力还没有达到英超的及格线,目前正在努力的适应当中,将来能够在英超联赛中占据一席之地也就达到了目的。“但是现在我在英超的位置还不稳,而英超是我发展的第一步,我必须踏踏实实地走好这一步,希望俱乐部能够支持。”辽足一位负责人向记者透露说,考虑到诸多因素,俱乐部已经决定除了埃弗顿俱乐部之外不再与其他欧洲俱乐部就李铁转会问题进行任何接触,并且原则上答应了埃弗顿俱乐部的请求,保证李铁不会花落旁家。但是,转会价格的问题还要等到合同到期之后按照相关条文的规定来执行。";function mywrite()
    {
    for(i=0;i<1000;i++)
    {
    current=document.all.myleft.value;
    document.all.myleft.value+=myData.substring(i,i+1);
    //document.all.myleft.value+=i+";";
    if(document.all.myleft.clientHeight>400)
    {
    document.all.myleft.value=current;
    j=i;
    break;
    }
    }
    if(j>0)
    {
    for(j;j<1000;j++)
    {
    current=document.all.myright.value;
    document.all.myright.value+=myData.substring(j,j+1);
    //document.all.myright.value+=j+";";
    if(document.all.myright.clientHeight>400)
    {
    document.all.myright.value=current;
    break;
    }
    }
    }
    document.all.myright.style.height=400-2;
    }
    </script>
    <body onload="mywrite()">
    <textarea id=myleft cols=40 style='overflow-y:visible' readOnly></textarea>
    <textarea id=myright cols=40 style='overflow-y:visible' readOnly></textarea>
      

  15.   

    谢谢fason(阿信) !各位高手,问问至今还没有解决。~_~
      

  16.   

    谢谢 seabell(百合心) ,我现在好累,我明天再试吧。晚上回家睡觉。
      

  17.   

    问题还是没有解决。seabell(百合心)的能实现,但实在太慢了。谁能再推一把啊。帮忙啊。这方面的资料实在太少了。我找不到地方面查啊。
      

  18.   

    需要的不是资料,而是想法。试试这个如何?
    <BODY>
    <SCRIPT LANGUAGE="JavaScript" defer>
    <!--
    //--------------------------  begin to split ----------------------------
    var elms = document.getElementsByTagName("TEXTAREA");
    var elm = elms[elms.length-1];
    while (elm.scrollHeight>elm.offsetHeight){
    var st = elm.value;
    for (var i=0;i<st.length;i++){
    elm.value=st.substring(0,i);
    if (elm.scrollHeight>elm.offsetHeight) break;
    }
    elm.value = st.substring(0,i-1);
    st = st.substr(i-1);
    div1.innerHTML += "<TEXTAREA rows=10 cols=20>"+st+"</TEXTAREA>";
    elm = elms[elms.length-1];
    }//-->
    </SCRIPT>
    <TEXTAREA rows=10 cols=20>据可靠消息透露,李铁年底永久转会英超埃弗顿俱乐部一事已经几乎成为定局。辽足俱乐部在此期间几乎拒绝了所有欧洲俱乐部“挖埃弗顿墙脚”的请求。一位负责人表示,这完全是为李铁在英超的发展考虑。李铁在埃弗顿俱乐部打拼的效果非常明显,尽管他与欧洲球员还存在一定的差距,但他的发展潜力和额外的商业价值引起了欧洲几家俱乐部的注意。由于李铁连续在英超联赛中代表埃弗顿队首发出场,所以在埃弗顿俱乐部与李铁个人签署的工资合同中,李铁的收入也大幅度上升,已经可以达到周薪1万英镑的水平。而辽足俱乐部与埃弗顿俱乐部签署的转会合同当中,李铁年终的永久转会费也将随着李铁出场次数的增加而水涨船高。前不久,来自西班牙的毕尔巴鄂竞技俱乐部等几个欧洲球会都找上门来洽谈关于收购李铁的事宜,其中还有人提出了160万英镑的转会合同(本报曾在10月23日的相关报道中详细披露过此事)。而这些接触是在绝对保密的状态下进行的。但是没有不透风的墙,埃弗顿俱乐部在得知此事后很快就作出了反应,并表示愿意提前和辽足俱乐部完成李铁的永久国际转会。据有关人士透露,在此期间,埃弗顿俱乐部还曾经找到李铁本人试探口风,问其对俱乐部和球队的看法等等。而英国人对球员的两个方面最为反感,一是在球场上假摔,另一个就是在球队里三心二意。刚刚在英超看到一点前景的李铁随即便找到俱乐部有关负责人表达了自己的看法,他认为自己的能力还没有达到英超的及格线,目前正在努力的适应当中,将来能够在英超联赛中占据一席之地也就达到了目的。“但是现在我在英超的位置还不稳,而英超是我发展的第一步,我必须踏踏实实地走好这一步,希望俱乐部能够支持。”辽足一位负责人向记者透露说,考虑到诸多因素,俱乐部已经决定除了埃弗顿俱乐部之外不再与其他欧洲俱乐部就李铁转会问题进行任何接触,并且原则上答应了埃弗顿俱乐部的请求,保证李铁不会花落旁家。但是,转会价格的问题还要等到合同到期之后按照相关条文的规定来执行"</TEXTAREA>
    <span id=div1></span>
    </BODY>
      

  19.   

    非常非常感谢emu_ston(人笨,是一辈子的事)!你的代码是实现了。不过...真的需要超频。上面的代码在我PIII 733,KingMax256,WinXp,IE6上运行还要很久的。如果我要实现在输入时动态分页,那可不能用。____________________________________________________________________________下面的代码的原理是什么?oTR.moveToPoint(oSel.offsetLeft, oSel.offsetTop)
    oTR.moveStart("character", -1*textLength)
    cl = oTR.getClientRects()
    作用是什么?这个能否取得前30行的字符offset?
    谢谢。____________________________________________________________________________<textarea rows=10 cols=100 onclick="getCursorPosition()" onkeyup="getCursorPosition()">
    北京时间10月6日,世界三大通讯社之一的法新社刊发图文报道,中国国脚孙继海因为在最近的世界杯预选赛中的表现,已经吸引了意大利俱乐部AC米兰和都灵队的争购。中国队只需在10月7日同阿曼队的比赛中战平就将首次进入世界杯决赛圈。图为孙继海(右)1998年12月19日在亚洲杯上的资料图片。</textarea>
    <script language=JScript>
    function getCursorPosition(){
    var src = event.srcElement
    var oTR = src.createTextRange()
    var oSel = document.selection.createRange()
    var textLength = src.innerText.length
    var line, char, total, cl
    oTR.moveToPoint(oSel.offsetLeft, oSel.offsetTop)
    oTR.moveStart("character", -1*textLength)
    cl = oTR.getClientRects()
    line = cl.length
    total = oTR.text.length
    oTR.moveToPoint(cl[cl.length-1].left, cl[cl.length-1].top)
    oTR.moveStart("character", -1*textLength)
    char = total - oTR.text.length
    if (oSel.offsetTop != cl[cl.length-1].top) {line++; char = 0}
    else if (src.createTextRange().text.substr(oTR.text.length, 2) == "\r\n") char -= 2
    window.status = "行: " + line +", 列: " + char + ", 第 " + total + " 个字符"
    }
    </SCRIPT>
      

  20.   

    怎么会!?我的PIII733,192M的HY,windows2000+IE5.0,运行0.6秒左右。其他人有发现类似情况吗?
      

  21.   

    第一次载入时,整个页面都白了!Mouse在页面上只有箭头(就是不能选 任何东东那种)
      

  22.   

    看这个,用emu_ston(人笨,是一辈子的事)的方法改的,
    理论效率应该是他的方法的10倍左右。实际当然要差一点。
    当前情况下每分割一个TEXTAREA只要对st操作10次左右。而原来方法需要100到200次
    <BODY>
    <SCRIPT LANGUAGE="JavaScript" defer>
    <!--
    //--------------------------  begin to split ----------------------------
    function mySplit()
    {
    var elms = document.getElementsByTagName("TEXTAREA");
    var elm = elms[elms.length-1];
    var max = elm.rows * elm.cols; //全是英文
    var min = elm.rows * (elm.cols - 2)/2; //汉字占两个位置
    var diff = max - min;
    var cur;
    var st = elm.value;
    while (elm.scrollHeight>elm.offsetHeight){
    cur = max;
    diff = max - min;
    elm.value=st.substring(0,cur);
    while (elm.scrollHeight>elm.offsetHeight){
    diff >>= 1;
    cur -= (diff>1) ? diff : 1;
    elm.value=st.substring(0,cur);
    }
    for (var i=cur;i<max;i++){
    elm.value=st.substring(0,i);
    if (elm.scrollHeight>elm.offsetHeight) break;
    }
    elm.value = st.substring(0,i-1);
    st = st.substr(i-1);
    div1.innerHTML += "<TEXTAREA rows=10 cols=20>"+st+"</TEXTAREA>";
    elm = elms[elms.length-1];
    }
    }
    mySplit();
    //-->
    </SCRIPT><span id=div1>
    <TEXTAREA rows=10 cols=20>据可靠消息透露,李铁年底永久转会英超埃弗顿俱乐部一事已经几乎成为定局。辽足俱乐部在此期间几乎拒绝了所有欧洲俱乐部“挖埃弗顿墙脚”的请求。一位负责人表示,这完全是为李铁在英超的发展考虑。李铁在埃弗顿俱乐部打拼的效果非常明显,尽管他与欧洲球员还存在一定的差距,但他的发展潜力和额外的商业价值引起了欧洲几家俱乐部的注意。由于李铁连续在英超联赛中代表埃弗顿队首发出场,所以在埃弗顿俱乐部与李铁个人签署的工资合同中,李铁的收入也大幅度上升,已经可以达到周薪1万英镑的水平。而辽足俱乐部与埃弗顿俱乐部签署的转会合同当中,李铁年终的永久转会费也将随着李铁出场次数的增加而水涨船高。前不久,来自西班牙的毕尔巴鄂竞技俱乐部等几个欧洲球会都找上门来洽谈关于收购李铁的事宜,其中还有人提出了160万英镑的转会合同(本报曾在10月23日的相关报道中详细披露过此事)。而这些接触是在绝对保密的状态下进行的。但是没有不透风的墙,埃弗顿俱乐部在得知此事后很快就作出了反应,并表示愿意提前和辽足俱乐部完成李铁的永久国际转会。据有关人士透露,在此期间,埃弗顿俱乐部还曾经找到李铁本人试探口风,问其对俱乐部和球队的看法等等。而英国人对球员的两个方面最为反感,一是在球场上假摔,另一个就是在球队里三心二意。刚刚在英超看到一点前景的李铁随即便找到俱乐部有关负责人表达了自己的看法,他认为自己的能力还没有达到英超的及格线,目前正在努力的适应当中,将来能够在英超联赛中占据一席之地也就达到了目的。“但是现在我在英超的位置还不稳,而英超是我发展的第一步,我必须踏踏实实地走好这一步,希望俱乐部能够支持。”辽足一位负责人向记者透露说,考虑到诸多因素,俱乐部已经决定除了埃弗顿俱乐部之外不再与其他欧洲俱乐部就李铁转会问题进行任何接触,并且原则上答应了埃弗顿俱乐部的请求,保证李铁不会花落旁家。但是,转会价格的问题还要等到合同到期之后按照相关条文的规定来执行"</TEXTAREA></span>
    </BODY>
      

  23.   

    最新的方法,上一个方法是前两天做的,这个是最新出炉的。
    看样子速度.......内容少的时候速度很快,但是内容多的时候还不如上一个方法快
    <SCRIPT LANGUAGE="JavaScript" defer>
    <!--
    //--------------------------  begin to split ----------------------------
    function mySplit()
    {
    var elms = document.all.div1.getElementsByTagName("TEXTAREA");
    var elm = document.all.div1.all.txt1;
    var st = elm.value;
    while (elm.scrollHeight>elm.offsetHeight){
    var oTR = elm.createTextRange()
    var textLength = elm.innerText.length
    var offLeft = elm.offsetLeft + elm.clientWidth;
    var offTop = elm.offsetTop + elm.clientHeight; oTR.moveToPoint(offLeft, offTop)
    oTR.moveStart("character", -1*textLength)
    var total = oTR.text.length elm.value = st.substring(0,total);
    st = st.substr(total);
    div1.innerHTML += "<TEXTAREA rows=10 cols=20>"+st+"</TEXTAREA>";
    elm = elms[elms.length-1];
    }
    }
    mySplit();
    //-->
    </SCRIPT><span id=div1>
    <TEXTAREA id=txt1 rows=10 cols=20>
    据可靠消息透露,李铁年底永久转会英超埃弗顿俱乐部一事已经几乎成为定局。辽足俱乐部在此期间几乎拒绝了所有欧洲俱乐部“挖埃弗顿墙脚”的请求。一位负责人表示,这完全是为李铁在英超的发展考虑。李铁在埃弗顿俱乐部打拼的效果非常明显,尽管他与欧洲球员还存在一定的差距,但他的发展潜力和额外的商业价值引起了欧洲几家俱乐部的注意。由于李铁连续在英超联赛中代表埃弗顿队首发出场,所以在埃弗顿俱乐部与李铁个人签署的工资合同中,李铁的收入也大幅度上升,已经可以达到周薪1万英镑的水平。而辽足俱乐部与埃弗顿俱乐部签署的转会合同当中,李铁年终的永久转会费也将随着李铁出场次数的增加而水涨船高。前不久,来自西班牙的毕尔巴鄂竞技俱乐部等几个欧洲球会都找上门来洽谈关于收购李铁的事宜,其中还有人提出了160万英镑的转会合同(本报曾在10月23日的相关报道中详细披露过此事)。而这些接触是在绝对保密的状态下进行的。但是没有不透风的墙,埃弗顿俱乐部在得知此事后很快就作出了反应,并表示愿意提前和辽足俱乐部完成李铁的永久国际转会。据有关人士透露,在此期间,埃弗顿俱乐部还曾经找到李铁本人试探口风,问其对俱乐部和球队的看法等等。而英国人对球员的两个方面最为反感,一是在球场上假摔,另一个就是在球队里三心二意。刚刚在英超看到一点前景的李铁随即便找到俱乐部有关负责人表达了自己的看法,他认为自己的能力还没有达到英超的及格线,目前正在努力的适应当中,将来能够在英超联赛中占据一席之地也就达到了目的。“但是现在我在英超的位置还不稳,而英超是我发展的第一步,我必须踏踏实实地走好这一步,希望俱乐部能够支持。”辽足一位负责人向记者透露说,考虑到诸多因素,俱乐部已经决定除了埃弗顿俱乐部之外不再与其他欧洲俱乐部就李铁转会问题进行任何接触,并且原则上答应了埃弗顿俱乐部的请求,保证李铁不会花落旁家。但是,转会价格的问题还要等到合同到期之后按照相关条文的规定来执行"
    </TEXTAREA></span>