jsp textarea 得到选中的行(返回数组)

多余的话不说,直接上代码(直接拷贝下面所有代码,即可得到textarea中光标的所有行)


function getRows(id){

  var startFocus = document.getElementById(id).selectionStart;
  var endFocus = document.getElementById(id).selectionEnd;
  var tags=document.getElementById(id).value;
  var sp="\n";    / /如果不对,可以把此处换成\r\n
var rows = [];
var startRow=getStartRow(startFocus,tags,sp);
var endRow=getEndRow(endFocus,tags,sp);
//开始和结束在一行
if(startEnd(startFocus,endFocus,tags,sp)){
// rows.push(startRow);
}else{
//开始点是否在结尾处
if(startIsEnd(startFocus,tags,sp)){
startRow=startRow+1;
//结尾是否在下一行的开始处
}if(endIsStart(endFocus,tags,sp)){
endRow=endRow-1;
}
}
for ( var i = startRow; i <= endRow; i++) {
  rows.push(i);
}
return rows;
 }
 
  
  //开始和结束是否在一行
 function startEnd(startFocus,endFocus,tags,sp)
 { 
    b=false;
    if(startFocus==endFocus){
     b= true;
    }else if(getStartRow(startFocus,tags,sp)==getEndRow(endFocus,tags,sp)){
     b= true;
    }
   return b;
 } 
 
  //开始焦点是否在结束位置
 function startIsEnd(startFocus,tags,sp)
 { 
    var f=[];
        f=tags.split(sp);
     var len=0;
     var row=0;
     var b=false;
     for ( var i = 0; i < f.length; i++) {
       if(i!=0){
            len+=1;
          }
        len=len+f[i].length;
        if(startFocus==len){
             b=true;
             break;
         }
  }
     return b;
   }
 
  //结束焦点是否在下一行开始处位置
 function endIsStart(endFocus,tags,sp)
 {
     var str=[];  str=tags.split(sp);
     var len=0; var aa=0;  var endRow=0;
     var b=false;
     for ( var i = 0; i < str.length; i++) {
       if(i!=0){
            len+=1;
          }
        aa=len;
        len=len+str[i].length;
        if(endFocus==len+1){
         b=true;
            break;;
          }
  }
    return b;

 
  //startRow
 function getStartRow(startFocus,tags,sp)
 { 
    var f=[]; f=tags.split(sp);
     var len=0;
     var aa=0;
     var startRow=0;
     for ( var i = 0; i < f.length; i++) {
       if(i!=0){
            len+=1;
          }
        aa=len;
        len=len+f[i].length;
        if(aa<=startFocus&&startFocus<=len){
             startRow=i;
             break;
         }
  }
    return startRow;
 } 
  //engRow
 function getEndRow(endFocus,tags,sp)
 { 
    var str=[];  str=tags.split(sp);
     var len=0;
     var aa=0;
     var endRow=0;
     for ( var i = 0; i < str.length; i++) {
       if(i!=0){
            len+=1;
          }
        aa=len;
        len=len+str[i].length;
        if(aa<=endFocus&&endFocus<=len){
             endRow=i;
             break;
         }
  }
    return endRow;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值