これが私の見解です:
<body >
<table class="table canvas" cellspacing=0 >
<tr class="twenty">
<th colspan=2>KP</th>
<th colspan=2>KA</th>
<th colspan=2>VP</th>
<th colspan=2>CR</th>
<th colspan=2>CS</th>
</tr>
<tr class="twenty" >
<td rowspan=3 colspan=2 >
<%= render @blocks[0] %>
</td>
<td colspan=2>
<%= render @blocks[1] %>
</td>
<td rowspan=3 colspan=2>
<%= render @blocks[2] %>
</td>
<td colspan=2>
<%= render @blocks[3] %>
</td>
<td rowspan=3 colspan=2>
<%= render @blocks[4] %>
</td>
</tr>
<tr class="twenty" >
<th colspan=2>KR</th>
<th colspan=2>CH</th>
</tr>
<tr class="twenty" >
<td colspan=2>
<%= render @blocks[5] %>
</td>
<td colspan=2>
<%= render @blocks[6] %>
</td>
</tr>
<tr class="fifty">
<th colspan=5>C$</th>
<th colspan=5>RS</th>
</tr>
<tr class="fifty" >
<td colspan=5>
<%= render @blocks[7] %>
</td>
<td colspan=5>
<%= render @blocks[8] %>
</td>
</tr>
</table>
</body>
各 render blocks[x] はこれをレンダリングします:
<%= form_for block, :html => { :id => "block_"+block.id_case.to_s} do |f| %>
<%= f.text_area :content, :size => "5x4" %>
<%= f.hidden_field :id_case %>
<%= f.hidden_field :canvas_id %>
<%= f.submit "Save" %>
<% end %>
したがって、各フォームは「block_1」、「block_2」などの ID をハッシュします。
次のようなフォームを作成します。
<form accept-charset="UTF-8" action="/blocks/11" class="edit_block" id="block_1" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="Xztxw50P1m0GXd9yysJfZdvy+/6HRtd+RupVX09Qwt4=" /></div>
<textarea cols="5" id="block_content" name="block[content]" rows="4">
Development</textarea>
<input id="block_id_case" name="block[id_case]" type="hidden" value="1" />
<input id="block_canvas_id" name="block[canvas_id]" type="hidden" value="1" />
<input name="commit" type="submit" value="Save" />
</form>
私のポイントは、誰かが現在テキストエリアに書いているときに、テキストエリア以外の場所をクリックするとすぐに「保存」ボタンをクリックするということです。
テストするために、この小さなJavaScriptコードを書きました:
var test=false;
$('form#block_1.edit_block textarea#block_content').click(function() {
test=true;
}
)
$('body').on('click', 'td', function(){
if (test)
{
$('form#block_1.edit_block input').trigger('click');
test=false
}
});
しかし、Chrome で JavaScript コンソールを開くと、テキストエリア以外の場所をクリックしようとするたびに、次のメッセージが表示されます。
キャッチされない RangeError: 最大呼び出しスタック サイズを超えました
誰かがそれがどこから来て、それを修正する方法を教えてくれますか? 私はCSSの場所があまり便利ではありません。
ありがとうございました。