我有一个会话流,每3秒刷新一次jQuery的.load()。
这个系统有效,但在每个对话中,我都有一个回答按钮,用.toggle()滑动表单(textarea和提交按钮)。
要显示流程,我会使用PHP一段时间。
我的问题是,当按.load()加载,点击了回答按钮时,表单再次隐藏,文本也包含。
<div id="the_river_loading">
<?php
$sql_the_river = 'SELECT u.nickname, u.firstname, u.lastname, u.main_photo, u.locality,
id_conversation, id_messages, owner, participants, text, date
FROM users AS u
INNER JOIN the_river
ON u.nickname = owner
WHERE answer = 0
ORDER BY date DESC';
$result_the_river = mysqli_query($mysqli, $sql_the_river);
$count = 0;
while ($data_the_river = mysqli_fetch_assoc($result_the_river))
{
$count++;
echo '<div class="message_container_news">'; // Start block conversation
echo '<a href="/profile/' . $nickname . '" class="name_links" style="vertical-align: top; font-size: 16px;">
<img src="' . $main_photo . '" title="' . $name . '" class="members_actu_photo" />' . $name . '</a>
<span style="vertical-align: top">, ' . $locality . '</span><span style="float: right; font-size: 12px;">Posté le Octobre 25, 2012</span>
<p style="margin-top: 5px;">' . $data_the_river['text'] . '</p>
<div class="btnAnswer_nb">' . $count_answer . '</div> Answers
<a href="/news/' . $data_the_river['id_conversation'] . '" style="margin-left: 100px; display: inline;" class="global_links">See conversation</a>
<div class="btnAnswer_news" id="btnAnswer_news_id_' . $count . '">Reply</div>
<form method="post" id="display_form_id_' . $count . '" action="" style="display: none;">
<br />
<textarea name="answer_text"></textarea><br />
<input type="submit" name="answer_valid_id_' . $count . '" value="Post" />
</form>
</div>'; // End block conversation
}
?>
</div>
<script type="text/javascript">
$(".btnAnswer_news").live("click", function(){
var num_show = this.id.replace(/\D/g, "");
$("#display_form_id_" + num_show).toggle("fast");
});
var auto_refresh = setInterval(
function() {
$("#the_river_loading").load("/home" + " .message_container_news");
}, 3000
);
</script>
很高兴看到你。
答案 0 :(得分:0)
这是因为如果再次将内容加载到容器中,每个js应用的样式将被删除(因为它们是通过style =“”应用的,并且会刷新)。您应该将表单和按钮移动到另一个Div,这不在加载Div。
答案 1 :(得分:0)
如果我正确理解您的问题(您的描述性不是很明显),您只是想在再次点击时不隐藏该表单,使用show()
代替toggle()
,所以请更换您的以下一行:
$("#display_form_id_" + num_show).toggle("fast");
这个:
$("#display_form_id_" + num_show).show("fast");
如果你想保留textarea的文字,你可以这样:
var auto_refresh = setInterval(
function() {
tx = $("#the_river_loading textarea[name='answer_text']").val();
$("#the_river_loading").load("/home" + " .message_container_news", function(){
$("#the_river_loading textarea[name='answer_text']").val(tx);
});
}, 3000
);