2012-08-31 57 views
-1

我想要一個textarea的javascript和HTML,圍繞帶括號,大括號,括號和單引號或雙引號的文本時,當所需的文本被選中, '開'(左)版本的支架,報價,paren等圍繞帶括號的選定文本(如Textmate)

例如,如果textarea包含'快速棕色狐狸跳','棕色狐狸'被選中,然後我左擊在我的鍵盤上鍵入'brown key'後,'brown fox'應該被括號包圍,並被取消選中。對於parens,單/雙引號和括號也是如此。

該解決方案應該適用於最新版本的Chrome,FF和Safari。

回答

1

檢查出這個完整的解決方案:

<html> 
    <head> 
     <title></title> 

     <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.min.js"></script> 
     <script type="text/javascript"> 
      (function($){ 
       $(document).ready(function(){ 
        var keyMap = { 
         '(': ')', 
         '[': ']', 
         '<': '>', 
         '{': '}', 
         '"': '"', 
         '\'': '\'' 
        }; 

        $('.editor').keypress(function(e){ 
         if(this.selectionStart == this.selectionEnd) 
          return true; 

         e.preventDefault(); 

         var txtCur = $(this).val(); 
         var left = txtCur.substring(0, this.selectionStart); 
         var middle = txtCur.substring(this.selectionStart, this.selectionEnd); 
         var right = txtCur.substring(this.selectionEnd); 

         var cur = String.fromCharCode(e.keyCode); 

         if(keyMap[cur]) 
          middle = cur + middle + keyMap[cur]; 
         else 
          middle = cur; 

         var pos = (left+middle).length; 
         $(this).val(left+middle+right); 
         this.setSelectionRange(pos,pos); 

        }); 
       }); 
      })(jQuery); 
     </script 
    </head> 
    <body> 
     <textarea class="editor">abcdefghijklmnopqrstuvwxyz</textarea> 
    </body> 
</html> 
1

搜索Google如何獲取選定的文本範圍 - 您不需要內容,只需要開始位置和長度。然後使用substr將字符串分解爲「之前,之間和之後」部分,再插入括號並將其連接在一起。

如果您已經編寫代碼並遇到實際問題,我很樂意提供幫助。同時請閱讀this blog post denouncing the kind of attitude you're showing here