1

我正在构建我的第一个 Ruby on Rails 应用程序(不是教程),它是旧 VB6 应用程序的一个端口。我有一个文本框,在退出时(失去焦点)需要计算一个人的年龄,如果 text_box 不为空,则需要禁用一些单选按钮。我可以让它工作,但是当我对此进行原型设计时,我收到了一条警告消息。当 text_box 失去焦点时,警报会触发两次。我做错了什么,和/或是什么导致了这种情况。

虽然我可以删除警报,但我担心如果我调用脚本来计算人员年龄,那么它也会触发两次。

这是我的代码:

部分(_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>  

人.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