0

ドキュメント->セクション->変数のcakephpモデル構造があります

私の質問は、cakePHP ではなく、javascript/jQuery に関連しているとのことでした。以前のcakephpの質問からこれを読み直さなければならない場合はお詫びします。

フォームでは、すべての変数をリストできるようにしたいのですが、ドキュメント内にネストしてからセクション レベルにネストします。そのビットは大丈夫です。

変数を選択できるように、変数レベルの各項目の横にチェックボックスが必要です。

セクションレベルにチェックボックスが必要です。選択すると、そのセクションの変数のすべてのチェックボックスが選択されます。

ドキュメントレベルでチェックボックスが必要なので、選択すると、そのドキュメントの変数のすべてのチェックボックスが選択されます(つまり、すべてのセクションで)。

これを容易にするために、チェックボックスに次のように名前を付けました(まあ、IDを設定しました)(疑似コード):

document level: id = Document id
section level: id = Document id_Section id
variable level: id = Document id_Section id_Variable_id

セクション レベルのチェックボックスを選択すると、変数レベルのチェックボックスのすべての ID の先頭にある Document id_Section_id スタブを使用して、そのセクションのすべての変数レベルのチェックボックスを設定できることを願っています...しかし、多分私はストローをつかんでいます?

レベルのチェックボックスのサンプルは次のとおりです: (レイアウトの謝罪)

<?php
//Document level

//all of this within a ForEach loop for documents

echo "<table>";
echo "<tr><td>Collection dates</td><td>".$project_document['data_collection_dates']."</td>";
echo "<td>Select (toggle) all variables"
        .$this->Form->checkbox($project_document['id'], // note that this sets the chkbox id to the value of the current document id
                            array('hiddenField' => false,'onclick'=> 'SelectSection(this,this.name,this.checked);'))
                            ."</td></tr>";
echo "</table>";

foreach ($project_document['ProjectDocumentSection'] as $project_document_section): 
    echo "<h4>" .  $project_document_section['title']. "</h4>";
    echo "<table>";
    echo "<tr><td>Collection Method</td><td>" . $project_document_section['method']. "</td></tr>";
    echo "<tr><td>Collection objective</td><td>" . $project_document_section['objective']. "</td>";
    echo "<td>Select (toggle) all section variables"
            .$this->Form->checkbox($project_document['id']
                ."_".$project_document_section['id'] // and here the chkbox id is set to combination of document id and section is (using _ as separator)
                , array('hiddenField' => false))."</td></tr>";
    echo "</table>";
        echo "<table><tr><th>Full text</th><th>Type</th><th>Format</th><th>Codeset</th></tr>" ; // header for variable table
        foreach ($project_document_section['ProjectDocumentSectionVariable'] as $project_document_section_var):
            echo"<tr><td>".$project_document_section_var['variable_type'] 
                            ."</td><td>".$project_document_section_var['variable_format'] 
                            ."</td><td>";
            echo "<td>".$this->Form->checkbox($project_document['id']
                    ."_".$project_document_section['id']
                        ."_".$project_document_section_var['id'], array('hiddenField' => false))."</td></tr>";
        endforeach;
        echo "</table>";

endforeach;
// and later endforeach for the document itself

?>

これをレンダリングすると、次のようになります。

<td>Select (toggle) all variables
<input type="checkbox" name="data[Project][11]"  onclick="SelectSection(this,this.name,this.checked);" value="1" id="Project11"/>
// note that checkbox id and name include ref to document id (11)
</td></tr>

<h4>Details of Health Workers at Facility</h4>

<table>
 <tr><td>Collection Method</td><td>FW completed evaluation on paper</td></tr>
<tr><td>Collection objective</td><td>blah blah blah blah</td>
<td>Select (toggle) all section variables
<input type="checkbox" name="data[Project][11_24]"  value="1" id="Project1124"/></td></tr>
// note that checkbox id and name include ref to document id (11) and section id (24)
</table>
<table>
<tr><th>Full text</th><th>Type</th><th>Format</th><th>Codeset</th></tr>
<tr><td>Site</td><td>Categorical</td><td>Quantative</td>
<td><input type="checkbox" name="data[Project][11_24_402]"  value="1" id="Project1124402"/></td></tr>
// note that checkbox id and name include ref to document id (11), section id (24) and variable id (402)
<tr><td>Facility</td><td>Categorical</td><td>Quantative</td>
<td><input type="checkbox" name="data[Project][11_24_403]"  value="1" id="Project1124403"/></td></tr>
<tr><td>Name</td><td>Text</td><td>Quantative</td>
<td><input type="checkbox" name="data[Project][11_24_404]"  value="1" id="Project1124404"/></td></tr>
<tr><td>Position of Health Worker</td><td>Text</td><td>Quantative</td>
<td><input type="checkbox" name="data[Project][11_24_405]"  value="1" id="Project1124405"/></td></tr>
<tr><td>Description</td><td>Text</td><td>Quantative</td>
<td><input type="checkbox" name="data[Project][11_24_406]"  value="1" id="Project1124406"/></td></tr>
<tr><td>Interviewer Code</td><td>Categorical</td><td>Quantative</td>
<td><input type="checkbox" name="data[Project][11_24_407]"  value="1" id="Project1124407"/></td></tr>
<tr><td>Date of Facility Visit </td><td>Date</td><td>Quantative</td>
<td><input type="checkbox" name="data[Project][11_24_408]"  value="1" id="Project1124408"/></td></tr>
</table>

これにアプローチする方法について誰かアドバイスはありますか?この鳥を殺すには複数の方法があると確信しています..

4

2 に答える 2

1

jQuery Selectors、より具体的にはAttribute Starts With Selectorを使用してみましたか?

于 2013-06-10T15:25:00.497 に答える
1

次のコードはinputtype属性がcheckboxで、属性がdatanameで始まるすべてのを選択します。次に、対応する各要素にクラスを追加します (この例では、クラスmyNewClassが見つかった各要素に追加されます。

Javascript

$('input[type="checkbox"][name^=data]').addClass('myNewClass');
于 2013-06-10T15:25:56.130 に答える