2013-01-31 65 views
1

這裏有在計算器上一些參考,如:
- textarea doesnt return value
- 和其他..

但即使有這些,我仍然不能得到這個工作。Jquery的textarea的沒有返回值的功能

我只是不經意地將我的代碼放在下面。對不起,回合。

預期行爲:當它進入的東西
控制檯768,16返回textarea的valye。

實際行爲:
控制檯返回 「(空字符串)」
當我只寫了msg = "This IS going through";而不是我試圖獲得.val()的行時,它完美地工作。函數傳遞「msg」變量就好了。

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
     <title>why oh why</title> 
     <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 

     <script type="text/javascript"> 
      $(function(){ 

       msg = $(".mymsg").val(); 
       $('.hitme').on("click", {param1: msg}, sendNotif); 

       function sendNotif(event) { 
        msg = event.data.param1; 
        console.log(msg); 
       } 

      }); 
     </script> 
    </head> 
<body> 


<textarea class="mymsg" cols="5" rows="10"></textarea> 
<span class="hitme">click here</span> 


</body> 
</html> 
+1

這是因爲當你使用'val'方法時,textarea的值是_an空string_。 – undefined

回答

2

問題是msg只能設置一次,在$(function() { … })網頁加載處理時將觸發。該行不再被執行。更改代碼的說:

$('.hitme').on("click", {param1: $(".mymsg").val()}, sendNotif); 
+0

謝謝!就像其他兩個答案一樣。 – Wayfarer

+0

我似乎太早稱爲'成功'。我的測試頁停止工作(不知道這是如何可能的)。 檢查是否你想要:http://jsfiddle.net/aNysU/1/ – Wayfarer

+1

啊我明白了爲什麼 - 從http://api.jquery.com/bind/:「...變量是通過eventData通過值傳入,它修復了事件發生時的價值。「換句話說,你不能動態地設置你發送給一個事件的數據。你應該做'$('。hitme')。on(「click」,function(){sendNotif($('。mymsg')。val();});' –

1

您需要在觸發事件提取mymsg的價值。我會做這樣的事情:

$(".hitme").click(function() { 
    console.log($(".mymsg").val()); 
}); 
+0

我有一些非常奇怪的行爲與此。這有時會起作用,有時它不會(如果是鉻)。 檢查此:http://jsfiddle.net/aNysU/1>這裏什麼都沒有返回 – Wayfarer

3

你所獲得的價值的onload,所以var msg將是空的,你需要抓住它,當你點擊的事件,而不是當你加載頁面

+0

你是現貨。謝謝。 – Wayfarer