2014-04-01 88 views
-1

我想在JavaScript中實現一個崇高的文本功能。在Sublime中按CTRL + D時,如果沒有突出顯示的單詞,則直接突出顯示文字指針最接近的單詞。higlight word在哪裏文字指針是

你有什麼想法你可以做到這一點在JavaScript?我正在使用jQuery。

這裏的是我在做什麼的JavaScript,但它不工作:

http://jsfiddle.net/fsgK6/1/

$('a').click(function(){ 
    var start = $('textarea').prop("selectionStart"); 
    var end = $('textarea').prop("selectionEnd"); 
    if(start == end && start != 0){ 
     var textarea_text = $('textarea').val(); 
     var word = ""; 
     // left side 
     while($.trim(word) == word){ 
      start = start - 1; 
      word = textarea_text.substr(start, end - start); 
      if(start == 0) 
       break; 
     } 
     word = $.trim(word); 
     // right side 
     while($.trim(word) == word){ 
      end = end + 1; 
      word = textarea_text.substr(start, end - start); 
      if(end > textarea_text.length) 
       break; 
     } 
     word = $.trim(word); 

     $('textarea').prop('selectionStart') = start; 
     $('textarea').prop('selectionEnd') = end; 
    } 
}) 

回答

1
$('textarea').prop('selectionStart') = start; 
$('textarea').prop('selectionEnd') = end; 

應該

$('textarea').prop('selectionStart', start); 
$('textarea').prop('selectionEnd', end); 

爲選擇起點和結束..它看起來像你需要仔細看看你是如何檢測字邊界

我結束了調整的起始碼更喜歡這個(後轉爲textarea點擊測試):

$('textarea').click(function(){ 
    var start = $('textarea').prop("selectionStart"); 
    var end = $('textarea').prop("selectionEnd"); 
    console.log(start + ' ' + end); 
    if(start == end && start != 0){ 
     var textarea_text = $('textarea').val(); 
     var word = ""; 
     // left side 
     while($.trim(word) == word){ 
      start = start - 1; 
      word = textarea_text.substr(start - 1, end - start); 
      console.log(word); 
      if(start == 0) 
       break; 
     } 
     word = $.trim(word); 
     // right side 
     while($.trim(word) == word){ 
      end = end + 1; 
      word = textarea_text.substr(start, end - start); 
      if(end > textarea_text.length) 
       break; 
     } 
     word = $.trim(word); 

     $('textarea').prop('selectionStart', start); 
     $('textarea').prop('selectionEnd', end); 
    } 
}) 

下面有一個更新的小提琴http://jsfiddle.net/fsgK6/2/