2013-09-22 49 views
-2

我有一個textarea,當你按下tab鍵時,它會插入三個空格。這裏是代碼:此代碼只能使用提醒?

<!doctype html> 
<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">        </script> 
     <style type="text/css"> 
      textarea { 
       tab-size: 3; 
      } 
     </style> 
    </head> 
    <body> 
     <textarea id="textarea"></textarea> 
     <script> 
      $(document).ready(function() { 
       $("textarea").keydown(function(e) { 
        if (e.which === 9) { 
         e.preventDefault(); 
         $(this).val += "\t"; 
         alert("Tab pressed"); 
        } 
       }); 
      }); 
     </script> 
    </body> 
</html> 

此代碼插入空格好,但是當我拿出警報,它不起作用。

+1

您的代碼實際上並沒有做任何事情。 'val()'是一個函數。 – SLaks

+0

@SLaks它確實有所作爲。它將「/ t」添加到使其成爲字符串的函數代碼中。 [小提琴](http://jsfiddle.net/n6tQw/1/)。只是搞亂......;) – Kiruse

+0

@ Derija93:是的,但是它會立即扔掉一個物體,所以它仍然沒有任何作用。 – SLaks

回答

2

val()是一種方法,而不是一個性質,所以嘗試:

var $this = $(this); 
$this.val($this.val() + "\t"); 

Fiddle

+0

這是真的,但它是__工作。見這裏http://jsfiddle.net/hBUz9/ – Ptr13

+0

@ Ptr13這並不能證明任何事情。見[這裏](http://jsfiddle.net/hBUz9/1/)。 textarea默認接受標籤,這就是爲什麼你認爲你的方法正常工作。 – Kiruse

+0

@ Ptr13當你做一個警報時,它實際上是使用Tab鍵按下,它不是默認在input元素中處理以在tab中提供一個空格,它不使用你的代碼來追加你的'\ t'打算去做。刪除它,看看。 – PSL