我有一个带有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中看到文本正在textareatext
var中保存。到目前为止一切都很好。
用户在输入文本后提交表单:
$(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
答案 0 :(得分:1)
那是因为你的变量是在另一个范围内定义的。您应该将其设置为全局(或者至少应该在可从您需要的所有位置访问的范围中定义它):
var textareatext;
$('#message').keyup(function(e){
if($(this).val() != '')
{
textareatext= $(this).val();
//console.log(textareatext);
}
});
答案 1 :(得分:1)
正如@dystroy所说,你可以将变量设为全局变量,但不要让全局变量存在,只需在需要时从字段中获取该文本,毕竟,你有一个ID:
<p class="message">'+ $("#message").val() +'</p>
答案 2 :(得分:0)
这是因为textareatext
是在keyup
事件中声明的局部变量。
因此,在proccessData()
javascript函数内部,您无法访问它,因此您在控制台中收到错误。
将其声明为全局变量将解决您的问题,如:
var __textareatext = '';
$('#message').keyup(function(e){
if($.trim(this.value) != '')
{
__textareatext= $.trim(this.value);
}
});
还将textareatext
javascript函数中的变量proccessData()
更改为__textareatext
。
答案 3 :(得分:0)
对我来说看起来像是一个范围问题。您在函数内定义了变量textareatext,然后尝试在另一个函数中使用它。尝试:
var textareatext;
$('#message').keyup(function(e){
if($(this).val() != '')
{
textareatext= $(this).val();
//console.log(textareatext);
}
});
编辑:干得好,大家好。