Potential fix by calling the update every 5 seconds. Brute force but works.
When the FireFox "suggest history" dropbox is used, neither the blur nor change event is fired. I have one solution that covers many of the common cases but fails on some others: * Works - type, down arrow to suggest history, tab * Works - type, down arrow to suggest history, enter, tab * Works - type, click * Works - type, tab * Fails - down arrow to suggest history, enter, tab * Fails - down arrow to suggest history, arrow right, tab I have another solution which is to have a timer update the budget every 5 seconds. This will make sure that even if the blur/change events are not fired, the values will be updated soon. It's brute force but works (in FF so far, still need to test cross-browser). I'm not seeing any performance impact, even with debugging on. #1350
This commit is contained in:
1 parent
b776098c7d
commit
8295b737a1
2 files changed
+11
-6
No files matched your search
@@ -35,7 +35,6 @@
|
||||
</td>
|
||||
<td>
|
||||
<%= text_field :deliverable, :cost_per_hour, :size => 7 %>
|
||||
<%= observe_field('deliverable_cost_per_hour', :function => "new Budget.updateAmounts();") %>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
@@ -47,7 +46,6 @@
|
||||
</td>
|
||||
<td>
|
||||
<%= text_field :deliverable, :total_hours, :size => 7 %>
|
||||
<%= observe_field('deliverable_total_hours', :function => "new Budget.updateAmounts();") %>
|
||||
</td>
|
||||
<td class="calculation-column">
|
||||
<%= content_tag(:span, 0, :class => "budget-calculation", :id => 'variableCost') %>
|
||||
@@ -60,7 +58,6 @@
|
||||
</td>
|
||||
<td>
|
||||
<%= text_field :deliverable, :fixed_cost, :size => 7 %>
|
||||
<%= observe_field('deliverable_fixed_cost', :function => "new Budget.updateAmounts();") %>
|
||||
</td>
|
||||
<td class="calculation-column">
|
||||
<%= content_tag(:span, 0, :class => "budget-calculation", :id => 'fixedCost') %>
|
||||
@@ -81,13 +78,19 @@
|
||||
|
||||
</table>
|
||||
<%= f.hidden_field :budget %>
|
||||
<%= observe_form('deliverable-form', :function => "new Budget.updateAmounts();", :on => 'blur') %>
|
||||
|
||||
|
||||
</div>
|
||||
<script type="text/javascript">new Budget.changeType();</script>
|
||||
<script type="text/javascript">new Budget.updateAmounts();</script>
|
||||
<script type="text/javascript">
|
||||
new PeriodicalExecuter(function() {
|
||||
Budget.updateAmounts();
|
||||
}, 5);
|
||||
</script>
|
||||
<div style="clear:both;"> </div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<%= mode == :create ? submit_tag(l(:button_create)) : submit_tag(l(:button_update)) %>
|
||||
<%= link_to_remote l(:label_preview),
|
||||
@@ -124,6 +127,7 @@ Object.extend(BudgetModule.prototype, {
|
||||
},
|
||||
|
||||
updateAmounts: function() {
|
||||
console.log('updateAmounts() called');
|
||||
if ($('deliverable_type').checked) {
|
||||
// Fixed cost
|
||||
var cost = Budget.toAmount($('deliverable_fixed_cost').value);
|
||||
|
||||
Reference in new issue
Block a user