0

私は、それぞれ10の質問を持つ5つの質問カテゴリを持つPHP自己評価フォームに取り組んでいます。アプリケーションの最初に、これらのカテゴリを表す5つのチェックボックスがあり、それらは自動的にチェックされます。ユーザーがカテゴリのチェックを外すと、そのカテゴリの質問はすぐにフォームから消え、もう一度チェックすると戻ってくるという考え方です。jQueryとAJAXの助けを借りて達成できるはずの何か。

CodeIgniterのform_helperでチェックボックスを作成しました。

for($i = 1; $i<=5; $i++) {
$this->formapp_model->printCatName($i);
$data = array('name'=>'category$i', 'id'=>'category$i', 'value'=>'$i', 'checked'=>TRUE);
echo form_checkbox($data);
}

また、データベースからカテゴリIDの後にカテゴリの10の質問すべてを印刷する機能があります。これは、そのまま投稿するだけで正常に機能します。

$this->formapp_model->printCategory(1);
$this->formapp_model->printCategory(2);
$this->formapp_model->printCategory(3);
$this->formapp_model->printCategory(4);
$this->formapp_model->printCategory(5);

これの助けを借りて: チェックボックスがチェックされているかどうかをjQuery経由でPHP に渡すと、jQueryについてそれを収集することができました。次のようなものが必要です。

var category1 = $('#category1:checked').val();

チェックボックスが選択されているかどうかを確認するため。私も試しました

var category1 = $('#category1:checked').post();

PHPがそれを認識するためにpostを使用するのは論理的であるように思われたので。

そして、印刷物の選択については、

if (isset($_POST['category 1'])) { $this->formapp_model->printCategory(1); } else { echo "This category is not selected."; }

これを試しましたが、PHPは、jQueryがメッセージを表示していることを認識しません。つまり、チェックボックスがオンになっているかどうかに関係なく、カテゴリの質問が完全に消えました。を確認しecho var_export($_POST);たところ、jQueryが出力しているのはarray()だけであることがわかりました。上記の質問は非常に有益でしたが、それを機能させるために必要だったであろういくつかの情報を見逃していました。askerも個別の変数の代わりに配列を使用していたため、適切に編集する方法がわかりません。

私はjQueryとAJAXの完全な初心者なので、jQueryとPHPが説明した方法で動的に通信するために必要なものを理解するのに苦労しています。私は同様のケースを見つけるためにstackoverflowを実行しましたが、それらのどれも私が必要とするものを完全に持っていませんでした。ただし、これが繰り返しの質問である場合は、深くお詫び申し上げます。助けてくれた人に感謝します!

4

1 に答える 1

2

PHPはサーバー側です。クライアント側に表示/非表示にする質問が必要です。つまり、jQuery自体(または通常のjsですが、すでにjQueryをロードしているため、ライブラリ自体を使用する方が速いです)を使用してそれを実現したいという意味です。

正直に言うと、私はあなたのビューがどのように機能しているかを実際にフォローしているわけではないので、アイデアを提供するためにいくつかの基本的なコードを提供します. チェックボックスと質問を作成して、それぞれに一意の ID を割り当てます。次に、チェック ボックスのオン クリック メソッドで、表示する質問を決定します。

HTML:

<div id="checkboxes">
    <input type="checkbox" id="box1" class="check" checked="checked"/>
    <input type="checkbox" id="box2" class="check" checked="checked" />
    <input type="checkbox" id="box3" class="check" checked="checked" />
    <input type="checkbox" id="box4" class="check" checked="checked" />
    <input type="checkbox" id="box5" class="check" checked="checked" />
</div>
<div id="question1" class="question">
    <p>Question 1</p>
</div>
<div id="question2" class="question">
    <p>Question 2</p>
</div>
<div id="question3" class="question">
    <p>Question 3</p>
</div>
<div id="question4" class="question">
    <p>Question 4</p>
</div>
<div id="question5" class="question">
    <p>Question 5</p>
</div>

jQuery:

$(".check").on("click",function(){
    var id = $(this).attr("id");
    var id2 = id.substr(id.length -1);
    var question = "question"+id2;
    if($(this).is(":checked"))
    {
        $("#"+question).css("display","block");
    } else {
        $("#"+question).css("display","none");
    }
});

デモ: http://jsfiddle.net/calder12/taSPX/1

于 2013-02-07T11:51:22.177 に答える