0

我有一个文本区域id="message"

      <form method="post" name="addreply" id="addreply"> 
        <input type="hidden" name="pmid" id="pmid" value="">
        <textarea rows="10" cols="5" name="message" id="message" placeholder="Write your message..."></textarea>
        <input type="submit" class="butt green" value="Send">
      </form>

我想将用户在该文本字段中输入的任何内容“保存”在一个变量中,并在提交表单后使用它。

目前,我所拥有的是:

$('#message').keyup(function(e){

    if($(this).val() != '')
    {
      var textareatext= $(this).val();
     //console.log(textareatext);
    }
 });

我可以在 console.log 中看到文本保存在textareatextvar 中。到目前为止,一切都很好。

用户在输入文本后提交表单:

   $(function() {
        $('form').submit(function(){
            $('#heading').hide();  
            $('#status').removeClass().addClass('alert info').html('Loading...').fadeIn();  
            $.post(
                '/index.php?i=pm&p=rr', 
                $('form').serialize(),
                function (data) {
                    proccessData(data);
                }
            );
            return false;    
        });
    });

    function proccessData (data) {
        $('#status').hide().html('');

        if(data=='success'){
            $("#post").append('<li class="current-user"><img width="30" height="30" src=""><div class="bubble"><a class="user-name"><?php echo $userdata['username']; ?></a><p class="message">'+textareatext+'</p><p class="time"></p></div></li>');


            $('#status').removeClass().addClass('alert success').html('Success!').slideDown();

        }
        else {
            $('#status').removeClass().addClass('alert error').html(data).fadeIn();
        }
    }

我在 console.log 中收到此错误:Uncaught ReferenceError: textareatext is not defined

4

4 回答 4

1

那是因为您的变量是在另一个范围内定义的。你应该让它成为全局的(或者至少你应该在你需要它的所有地方都可以访问的范围内定义它):

var textareatext;
$('#message').keyup(function(e){

    if($(this).val() != '')
    {
      textareatext= $(this).val();
     //console.log(textareatext);
    }
 });
于 2013-10-24T14:10:06.860 回答
1

正如@dystroy 所说,您可以使变量成为全局变量,而不是到处放置全局变量,只需在需要时从字段中获取该文本,毕竟,您有一个 ID:

<p class="message">'+ $("#message").val() +'</p>
于 2013-10-24T14:11:12.883 回答
0

那是因为是在事件textareatext内部声明的局部变量。keyup

因此,在proccessData()javascript 函数内部,您无法访问它,因此您在控制台中遇到错误。

将其声明为全局变量将解决您的问题,例如:

var __textareatext = '';

$('#message').keyup(function(e){

    if($.trim(this.value) != '')
    {
       __textareatext= $.trim(this.value);
    }
});

还将javascript函数中textareatext的变量更改为.proccessData()__textareatext

于 2013-10-24T14:11:09.070 回答
0

对我来说似乎是一个范围问题。您在函数中定义了变量 textareatext,然后尝试在另一个函数中使用它。尝试:

var textareatext;
$('#message').keyup(function(e){

if($(this).val() != '')
{
  textareatext= $(this).val();
 //console.log(textareatext);
}
});

编辑:干得好,大家。

于 2013-10-24T14:13:05.163 回答