2011-10-16 103 views
0

我有一個文本框,我需要添加它們的值。問題是這些文本字段中的值沒有輸入,而是從其他來源獲得。這些文本字段也恰好是隻讀的。 我需要的是當這些文本字段的值發生變化時觸發的適當事件。這是我目前使用的,但它不夠好,因爲我必須點擊並失去焦點,以便文本字段計算。 FYI .change和.click事件也不能很好地工作。我需要立即將它們的值總結起來,動態變化。 #grandmealstotal是需要添加的文本字段之一,#usdgrandaccomtotal是需要添加的其他文本字段。結果將被警告並顯示在ID爲#gross_tripexpense的文本框中。以下是我正在使用的添加文本字段的值Jquery HTML

$("#grandmealstotal").live('blur',function(){ 
var mealtotal=parseFloat($("#grandmealstotal").val()); 
var accomtotal=parseFloat($("#usdgrandaccomtotal").val()); 
var grosstotals=parseFloat(accomtotal+mealtotal); 
alert(grosstotals) 
$("#gross_tripexpense").val((grosstotals).toFixed(2)); 
}) 

任何幫助表示讚賞。

+0

我必須補充一點,我現在已經開始使用$(「#formdiv」)。live('mousemove',function)....其中#formdiv是我的表單的文本字段所在的ID。當鼠標移動時,值得到計算。不過,我覺得這不是非常有效,並且不會產生顯示實時感覺的「及時」結果。 – MaxI

回答

1

你可以在這種情況下使用 .keydown().keyup()事件:

$('#grandmealstotal').keyup(function() { 
    var mealtotal = parseFloat($('#grandmealstotal').val()); 
    var accomtotal = parseFloat($('#usdgrandaccomtotal').val()); 
    var grosstotals = parseFloat(accomtotal + mealtotal); 
    alert(grosstotals); 
    $('#gross_tripexpense').val((grosstotals).toFixed(2)); 
}); 

另外,還要確保你進行錯誤處理那些parseFloat方法,如果用戶輸入無效號碼可能會失敗。你可以使用這個isNaN功能:

var mealtotal = parseFloat($('#grandmealstotal').val()); 
if (!isNaN(mealtotal)) { 
    // use the mealtotal variable here 
} else { 
    alert('please enter a valid number for total meals'); 
} 

UPDATE:

如果值是隻讀的,不能改變,一旦DOM準備就緒,你可以進行計算:

$(function() { 
    ... do the calculation here 
}); 
+0

textfields只讀 – MaxI

+0

@Max,糟糕,錯過了這個細節。在這種情況下,您不需要訂閱任何事件,因爲它們的值不能更改。只需在'$(document).ready'中執行計算。 –

+0

隨着用戶瀏覽並選擇各種項目,textfields會定期更改其值。在解決方法中查看我的其他評論。 – MaxI

0

您可以爲.change()事件添加事件處理程序,然後每次更新輸入中的值時觸發.change()事件。