工作記錄(JS向textarea添加固定內容、通過固定字符將字符串分割為數組)


第一個是在 textarea 輸入框中添加固定的內容。

代碼如下:

<textarea id="text" cols="30" rows="10"></textarea>
<br>
<button id="btn">添加公司</button>
var textareaIndex = 0;
$("#text").on('keydown',function(e){
  textareaIndex = this.selectionStart+1;
  if(e.keyCode == 8){
    var starText,endText,replaceText;
    var text = $(this).val();
    var selectionIndex = this.selectionStart-1;
    if(text[selectionIndex]==']'){
      var result = rep(text,selectionIndex);
      $(this).val(result.text);
      this.selectionStart = this.selectionEnd = result.index;
      return false;
    }
  }
})

$("#text").click(function(){
  textareaIndex = this.selectionStart; // 獲取光標所在下標
})

function rep(str,index){
  var i = index,k='no';
  while(i>0){
    if(str[--i]=='['){
      k = i;
      break;
    }
  }
  if(k=='no')k=index
  return {text:str.substring(0,k)+str.substring(index+1),index:k}
}

$('#btn').click(function(){
  var text = $("#text").val();
  var str = text.substring(0,textareaIndex);
  var texts = str + '[公司名稱]' + text.substring(textareaIndex,text.length);
  $("#text").val(texts);
})

 

效果在此就不展示了。(不過到最后並不能滿足大部分需求所以並沒有使用這種方法,使用的是 HTML 5 的新屬性 contenteditable)。

 

第二個是研究聊天發表情,是為了實現微信端和小程序端的互相通信,過程中碰到種種困難,尤其是小程序端,所以想到將帶表情的內容改變成一個數組形式發送。

代碼如下:

var str = '你好,#微笑;1。加油兄弟#握手;#的哈哈但是.#所屬;';

function f(str){
  var arr = [],tmp = '';
  for(var i=0,l=str.length;i<l;i++){
    if(str[i]=='#'&&tmp){
      arr.push(tmp);
      tmp = '';
    }
    tmp+=str[i];
    if(str[i]==';'&&tmp[0]=='#'){
      arr.push(tmp);
      tmp = '';
    }
  }
  if(tmp)arr.push(tmp)
  return arr;
}

var data = f(str);

console.log(data)
// ["你好,", "#微笑;", "1。加油兄弟", "#握手;", "#的哈哈但是."]

 

允悲,這種方法是可以實現想要的效果的,只不過有點麻煩,尤其是小程序端,不過最后並沒有使用這種方法(原因是發現現在的輸入法自帶表情,不僅表情全而且無需做任何處理)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM