質問ごとに質問があるテーブル(<select>
要素から選択)とコメント(<textarea>
要素)があります。すべての質問が必要ですが、私は提出するために記入したコメントの数だけ欲しいです。私はSQLiteのテーブルからコメントと質問入力を生成していますので、require
をどこにでも置くことはできません。解決方法は、JavascriptコードまたはRuby ERBのいずれかにすることができます。Javascript/jQuery - フォームに必要なコメントの最小数を確認する
私は何とか解決策に使用できると確信する質問とコメントのカウンターがあります。私はかなりJavascriptを新しく、それを動作させる方法がわからない。
これは、この機能を実装で私の試みです:
<table class="sortable">
<tr>
<th></th>
</tr>
<% data.each.with_index do |data,index|%>
<%if data[0] >= 6 && data[0] <= 20%>
<tr>
<td><%=data[1]%></td><td><select name="<%=index%>">
<option value=""></option>
<option value="Yes">Yes</option>
<option value="No">No</option>
<option value="na">N/a</option>
</select>
<div class="accordion">Comment</div>
<div class="panel">
<textarea class="comments" name="comment<%=index%>" rows="4" cols="15"></textarea>
</div>
</td>
</tr>
<% end %>
<% end %>
</table>
$('select').change(function() {
// get all selects
var allSelects = $('select');
// set values count by type
//var yes = 0;
//var no = 0;
// var na = 0;
var total = 0;
// for each select increase count
$.each(allSelects, function(i, s) {
// increase count
if($(s).val() == 'Yes') { total++; }
if($(s).val() == 'No') { total++; }
if($(s).val() == 'na') { total++; }
});
// update count values summary
$('.cnt-yes').text(yes);
$('.cnt-no').text(no);
$('.cnt-na').text(na);
$('.cnt-total').text(total);
if (total > 19) {
alert('You have completed this ......')
};
var commentstotal = 0;
$('select').change(function() {
$('.comment-total').text(commentstotal);
});
$(".comments").on("blur", function(){
$(this).val() ? commentstotal++ : commentstotal--;
$('.comment-total').text(commentstotal);
})
私はそれに従うのが難しいので、あなたの説明を書き換えようとします...私は解決策で刺すと言いました。 「必須」となるすべての入力を参照し、少なくともそれらのうちのX個が「入力中」の要件を満たしていることを確認します。 –
@BradJankeはい、私が最善の方法を見つけ出そうとしていることですね。 –
あなたは入力がすべての入力にイベントをアタッチすることでどの入力があなたの要件を満たしているかを把握できますハンドラに適切に記入してください。または、それらが送信をヒットするのを待ってから、入力をループすることができます。個人的には、後者は頭痛の種が少なく、レスリングのイベントが時々課税される可能性があるので、私はそれを好む。 –