2013-01-31 64 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