0

その巨大な質問は、いつか読む必要があります。申し訳ありませんが、私は新しい Web 開発者です。本当に助けが必要です。それは 1 ~ 2 行の問題だと思います。そのため、数分で解決できることを願っています。 . それほど簡単ではない場合でも、問題ありません。対処する準備ができています。

このコードを見てください:

<?php
foreach($array as $value)
       {
?>
           <div>
               <div class="topic" onclick="showDetails()">
                   <h2>Topic</h2>
               </div>
               <div class="details">
                   <div>
                     <input type="text" name="comment" id="comment" onkeypress="showUser()" />
                   </div>
               </div>
           </div>
<?php
       }
?>

ここでは、いくつかの要素があり、それぞれに独自のコンテンツ ("topic" div、"details" div) がありますが、ループのために、<div>この項目がどれだけ存在するかはわかりません。最初はすべての「詳細」divが非表示になります。トピックをクリックすると、次の(対応する)「詳細」divが表示されます。そのために関数を使用します。関数は次のとおりです。<div>foreachshowDetails()

<script>
    $(document).ready(function(){
         $(".details").hide();
    }
    function showDetails()
    {
        $(this).(".details").show();
    }
</script>

「詳細」divを正しく検出できません。何をすべきか教えてもらえますか?

だから、これは私の最初の問題でした。私の2番目の問題は次のとおりです。

「詳細」の div には、入力ボックス ( <input type="text" />) があります。ユーザーがそこに入力できるようになり、データベースに保存された後に表示されるようにしたいと考えています。Facebook のコメント機能のように、投稿にコメントすると、ページ全体をリロードすることなく、数秒で保存されて表示されます。showUser()それを行うためのものです。私がshowUser()機能のために試したこと:

<script type="text/javascript">
    function showUser()
    {
        $(this).keypress(function(e){
           if(e.which && e.which==13)
             {
                 $.post("<?php echo base_url();?>help/comment",
                 {
                     q:this.value
                 })
             }
           else
                    {

                    }
        });
    }
</script>

これは Code Igniter プロジェクトであるため、「ヘルプ」は「コントローラー」であり、「コメント」はそのコントローラー内の関数です。comment()関数は次のとおりです。

public function comment()
{
    $this->load->model('model');

    $topic=array();
    $topic['user_id']=1;
    $topic['topic_id']=1;
    $topic['comment']=$_POST["q"];

    $this->model->comment($topic);
}

このコードは、ユーザーのコメントをデータベースに保存していません。

この大きな質問を評価してくれてありがとう!

4

1 に答える 1

0

あなたの質問は少し大きすぎます。おそらく 2 つの別々のトピックに分割する必要があります。

簡単に言えば、

1) 2 つの div をリンクするには、個々の ID を動的に作成する必要があります。元:

foreach($array as $key=>$value)

それから

<div id="topic_<?= $key ?>"  data-id="<?= $key ?>"

詳細セクションでも同じです。次にjqueryで:

var id = $(this).attr('data-id');
$("#details_"+ id).hide();  // or show()

これで始められるはずです。


2) $this->model->comment() が何をしているのか、コードからはわかりません。基本的なデバッグを行うだけです。

私は特にこの種の問題のデバッグ (さらには CI の使用) について書いたので、これらの問題をデバッグする方法については、こちらを参照してください。

http://codebyjeff.com/blog/2013/04/how-do-i-use-ajax-with-framework-x

于 2013-05-15T23:48:02.590 に答える