以下の表にはテキストボックスが含まれており、テキストボックスの横には「OpenGrid」と呼ばれるハイパーリンクが含まれています。ユーザーがこのリンクをクリックすると、グリッドが開き、このグリッドに3〜26の数字ボタンが表示されます。
<table id="optionAndAnswer" class="optionAndAnswer">
<tr class="option">
<td>1. Option Type:</td>
<td>
<div class="box">
<input type="text" name="gridValues" class="gridTxt maxRow" id="mainGridTxt" readonly="readonly" />
<span href="#" class="showGrid" id="showGridId">[Open Grid]</span>
</div>
<table class="optionTypeTbl">
<tr>
<tr><td><input type="button" value="3" id="btn3" name="btn3Name" class="gridBtns gridBtnsOff">
<input type="button" value="4" id="btn4" name="btn4Name" class="gridBtns gridBtnsOff">
<input type="button" value="5" id="btn5" name="btn5Name" class="gridBtns gridBtnsOff">
<input type="button" value="6" id="btn6" name="btn6Name" class="gridBtns gridBtnsOff">
//...goes all the way to btn26
</tr>
</table>
</td>
</tr>
</table>
これで、以下のコードは、グリッドボタンの1つをトリガーして、グリッドボタンがクリックされたことを示すことができます。このコードは以下のとおりです。
$('#btn'+gridValues).trigger('click');
これで、上記のすべてが正常になりました。
問題:
私が抱えている問題は、ユーザーが上部のオプションコントロールと同じテンプレートを含む行を追加できることです。ただし、このオプションと回答のコントロール内で、ユーザーはこのテンプレートのグリッドボタンの1つをクリックして、必要に応じてオプションの種類を変更できます。.trigger()
だから私の質問は、このテンプレート内のグリッドボタンを正しく指すようにどのように書くのですか?上記のコードを見ると、ボタンのIDを使用していますが、テンプレートを実行する以下のコードを見ると、IDは含まれていません。単に、オプションとコントロール機能を上からテンプレートにコピーするだけです。
以下はテンプレートです:
function insertQuestion(form) {
var context = $('#optionAndAnswer');
var $tbody = $('#qandatbl > tbody');
var $tr = $("<tr class='optionAndAnswer' align='center'>");
var $options = $("<div class='option'>Option Type:<br/></div>");
var $questionType = '';
$('.gridTxt', context).each( function() {
var $this = $(this);
var $optionsText = $("<input type='text' class='gridTxtRow maxRow' readonly='readonly' />")
.attr('name',$this.attr('name')+"[]")
.attr('value',$this.val())
.appendTo( $options )
.after("<span href='#' class='showGrid'>[Open Grid]</span>");
$questionType = $this.val();
});
$td.append($options);
$tbody.append($tr);
}
アップデート:
このアプリケーションのURLをここに作成しました。次の手順に従ってアプリケーションを使用すると、何が起こっているかを確認できます。
- ステップ1:アプリケーションを開くと、ページに緑色のプラスボタンが表示され、それをクリックすると、モーダルウィンドウが表示されます。
- ステップ2:モーダルウィンドウに検索バーがあり、「AAA」と入力して検索を送信すると、一連の行が表示されます。
- ステップ3:最初の行の[オプションタイプ] ADの下に、この行内の[追加]ボタンをクリックすると、モーダルウィンドウが閉じ、右側の灰色のテキストボックスに[オプションタイプ]テキストボックスが表示されます。 4に等しく、回答ボタンA、B、C、およびDが表示されます。これは、覚えているように、その行のオプションタイプが「AD」であったためです。
これで正常に機能しますが、最上位のオプションと回答コントロールでのみ機能します。以下の手順に従ってください。
- ステップ4:[質問の追加]ボタンをクリックすると、オプションの詳細と回答コントロールを含む行が下に追加されます。
- ステップ5:追加した行の左側に緑色のプラスボタンが表示されたら、このボタンをクリックして、検索ボックスで同じ検索「AAA」を実行します。
- ステップ6:今回は、[追加]ボタンをクリックして最後の行を選択します。この行の[オプションの種類]は[AG]であるため、[回答]ボタンA、B、C、D、E、F、およびG、しかしそれはこれをしません、それはまだ「A、B、C、D」を述べます。
では、追加された行の1つにあるオプションと回答コントロールの回答ボタンの表示を変更するにはどうすればよいですか?
アプリケーションのaddwindow()
ビューソースに表示される機能は、「追加」ボタンがクリックされた後に発生する機能です。[追加]ボタンは付属のPHPスクリプトにあり、このボタンのコードは以下のとおりです。モーダルウィンドウで検索を実行した後に表示されるすべての列が含まれています。
echo "<table border='1' id='resulttbl'>
<tr>
<th class='questionth'>Question</th>
<th class='optiontypeth'>Option Type</th>
<th class='noofanswersth'>Number of <br/> Answers</th>
<th class='answerth'>Answer</th>
<th class='noofrepliesth'>Number of <br/> Replies</th>
<th class='noofmarksth'>Number of <br/> Marks</th>
</tr>";
foreach ($searchResults as $key=>$question) {
echo '<tr class="questiontd"><td>'.htmlspecialchars($question).'</td>';
echo '<td class="optiontypetd">'.htmlspecialchars($searchOption[$key]).'</td>';
echo '<td class="noofanswerstd">'.htmlspecialchars($searchNoofAnswers[$key]).'</td>';
echo '<td class="answertd">'.htmlspecialchars($searchAnswer[$key]).'</td>';
echo '<td class="noofrepliestd">'.htmlspecialchars($searchReply[$key]).'</td>';
echo '<td class="noofmarkstd">'.htmlspecialchars($searchMarks[$key]).'</td>';
echo "<td class='addtd'><button type='button' class='add' onclick=\"parent.addwindow('$question','$searchMarks[$key]','$searchNoofAnswers[$key]','$searchOption[$key]','$searchReply[$key]','$searchAnswer[$key]');\">Add</button></td></tr>";
}
echo "</table>";