"Daily"ラジオボタンがチェックされているとき、私のレールフォームのラジオボタンのリストを動的に表示/非表示する必要があります。これはほとんど機能しますが、「毎週」(「毎日」のチェックを外す)をチェックすると、リストは非表示になります。 JavaScriptが新しくて、私が逃しているものを理解しようとしています。 resetradio(本) - ここでチェックボックスをオフにすると、レールフォームのラジオボタンが非表示になりません。
<%= form_for list_chores_path(@list.id) do |f| %>
<div class="field">
<%= f.radio_button :frequency, 'Daily', onClick: "resetradio(this)" %> Daily<br>
<div class="buttons" style="display:none;">
<%= f.radio_button :time_of_day, 'Morning', onClick:"setradio()" %> Morning<br>
<%= f.radio_button :time_of_day, 'Evening', onClick:"setradio()" %> Evening<br>
<%= f.radio_button :time_of_day, 'Any Time', onClick:"setradio()" %> Any Time<br>
</div>
<%= f.radio_button :frequency, 'Weekly' %> Weekly<br>
</div>
<script type="text/javascript">
function resetradio (radio) {
var buttons = document.querySelector('.buttons');
var radios = document.getElementsByName('/lists/<%= @list.id %>/chores[time_of_day]');
radios[0].checked = false;
if (radio.checked == true) {
buttons.style.display = 'block';
}
else {
buttons.style.display = 'none';
}
}
function setradio() {
var radio = document.getElementsByName('/lists/<%= @list.id %>/chores[frequency]')[0];
if (radio.checked == false) {
radio.checked = true;
}
}
</script>
あなたは毎週クリックすると、あなたはjavascript関数を呼び出していないのでそれはあるHTML
<div class="field">
<input onclick="resetradio(this)" type="radio" value="Daily" name="/lists/4/chores[frequency]" id="_lists_4_chores_frequency_daily"> Daily<br>
<div class="buttons" style="display: block;">
<input onclick="setradio()" type="radio" value="Morning" name="/lists/4/chores[time_of_day]" id="_lists_4_chores_time_of_day_morning"> Morning<br>
<input onclick="setradio()" type="radio" value="Evening" name="/lists/4/chores[time_of_day]" id="_lists_4_chores_time_of_day_evening"> Evening<br>
<input onclick="setradio()" type="radio" value="Any Time" name="/lists/4/chores[time_of_day]" id="_lists_4_chores_time_of_day_any_time"> Any Time<br>
</div>
<input type="radio" value="Weekly" name="/lists/4/chores[frequency]" id="_lists_4_chores_frequency_weekly"> Weekly<br>
'document.getElementsById'のようなものはありません。なぜなら、' id'は一意であると考えられるからです。 *常に*ブラウザコンソールでエラーを最初に確認してください。 –
チップをありがとう!私はそれを "document.getElementsByName"に変更し、もはやエラーを取得しません。残念ながら、私はまだ "Daily"がチェックされていないときにtime_of_dayラジオボタンが隠れていないのと同じ動作をしています。 – Mary
Qを編集して、rorソースではなく実際のHTML出力を表示できますか? –