古い VB6 アプリケーションのポートである、最初の Ruby on Rails アプリケーション (チュートリアルではない) を構築しています。終了時に (フォーカスを失う) 人の年齢を計算する必要があるテキスト ボックスがあり、text_box が空白でない場合は、いくつかのラジオボタンを無効にする必要があります。私はこれを機能させることができますが、これをプロトタイピングしているときに警告メッセージが表示されました。text_box がフォーカスを失うと、アラートが 2 回発生します。私が間違っていること、および/またはこれを引き起こしているもの。
アラートを削除することもできますが、人の年齢を計算するスクリプトを呼び出すと、アラートも 2 回発生するのではないかと懸念しています。
これが私のコードです:
一部(_person_registration.html.erb)
<fieldset>
<legend id="age_calcs">Age</legend>
<div class="span12">
<div class="span1">
<%= text_field_tag :age %>
<%= label_tag :age, "Age" %>
</div>
<div class="span10 form-inline">
<%= f.radio_button :age_unit, "years" %> <!-- #, :checked => true, :disabled => true -->
<%= f.label :age_unit_years, "Years" %>
<%= f.radio_button :age_unit, "months" %>
<%= f.label :age_unit_months, "Months" %>
</div>
</div>
<div class="span12">
<div class="form-inline">
<!-- <fieldset> -->
<%= label_tag :age_group, "Age Group" %>
<%= f.radio_button(:age_group, 0, :checked => true ) %>
<%= f.label(:age_group_adult, "Adult", :value => '0' ) %>
<%= f.radio_button(:age_group, 1) %>
<%= f.label(:age_group_child, "Child", :value => '1') %>
<%= f.radio_button(:age_group, 2) %>
<%= f.label(:age_group_infant, "Infant", :value => '2' ) %>
<!-- </fieldset> -->
</div>
</div>
</fieldset>
people.js
$(document).ready(function() {
$("input[type='text']#age").bind('focusout', function() {
{alert ('Age calculation - Not yet delivered')}
if ($(this).val().length != 0 ) {
$('input#patient_patient_detail_attributes_age_group_0').attr('disabled', true);
$('input#patient_patient_detail_attributes_age_group_1').attr('disabled', '');
$('input#patient_patient_detail_attributes_age_group_2').attr('disabled', '');
$('input#patient_patient_detail_attributes_age_group_child_3').attr('disabled', 'true');
// alert ('Age calculations');
}
else {
// alert ('Else portion');
$('input#patient_patient_detail_attributes_age_group_0').attr('disabled', false);
$('input#patient_patient_detail_attributes_age_group_1').attr('disabled', false);
$('input#patient_patient_detail_attributes_age_group_2').attr('disabled', false);
}
event.preventDefault();
})
});
さらに、年齢計算を実行するためにフォーカスが失われたときに ruby メソッドを呼び出すことはできますか、それとも JavaScript で計算を行う必要がありますか?