我正在构建我的第一个 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 中进行计算?