1

我有一个对话流,每 3 秒刷新一次 jQuery 的 .load() 。

这个系统可以工作,但在每次对话中我都有一个答案按钮,它使用 .toggle() 滑动表单(文本区域和提交按钮)。

为了显示流程,我在 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>

很高兴读到你。

4

2 回答 2

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
);
于 2012-10-23T12:04:53.517 回答
0

这是因为如果您再次将内容加载到容器中,每个 js 应用的样式将被删除(因为它们是通过 style="" 应用的,并且会被刷新)。您应该将 Form 和 Button 移动到另一个 Div,它不在加载 Div 中。

于 2012-10-23T11:47:32.953 回答