1

古い 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 で計算を行う必要がありますか?

4

0 に答える 0