我正在創建一個稅計算器,並有一些綁定事件的問題。有五個字段:在jQuery中綁定事件(雙擊事件點擊...)
- 一個文本字段。用戶必須鍵入他的城市,腳本會爲文本值分配一個數字。例如,您輸入「New York」,當您點擊「Go!」時,系統會爲其分配0.1。
- 滑塊。當您移動滑塊時,該字段中的數字會發生變化。
- 選擇帶有幾個數字值的框。
- 和5,你必須鍵入數字
所有這些領域的簡單的文本框在一個名爲「TaxCalculator中」的形式。提交時,會觸發一個名爲「calculateum」的函數。問題是我不得不使用jquery計算插件和稱爲「recalc」的函數進行另一次計算。所以,讓我們假設某人填寫了所提到的字段,但想要更改第一個字段中的某些數字或文本。我想重新計算每次更改的其他計算。我設法綁定選擇框更改:
$("[id=select_box_1]").bind("change", recalc);
和滑塊更改與類似的代碼。
但是,在兩種情況下觸發「重新計算」存在問題。
1:當您點擊「Go!」開始計算時按鈕,只觸發一個功能。我想要完成這一點,當你點擊「Go」按鈕時,兩個函數都會被觸發(calculateum和recalc)。但是,只觸發「calculateum」,我必須使用「mousemove」或再次單擊該按鈕才能使用另一個函數。
2:用戶可以更改在第一個字段中鍵入的城市。在這種情況下,數值發生變化,但數字字段被隱藏,我不知道使用哪個屬性來觸發「recalc」函數。我認爲「改變」是合乎邏輯的選擇,考慮到該領域的價值發生了變化,但它沒有奏效。
這裏是我的代碼部分:
<form id="taxcalculator" style="height:150px;" action="#" onsubmit="calculatesum(); return false">
<input type="text" size="20" id="city" name="city" />
<div id="slider"></div>
</div>
<div id="income_1" style="width:300px; margin:0 0 15px 0;">
<select id="income_item_1" style="float:left; width:200px;">
<option value="0" selected="selected">0</option>
<option value="2.000">2.000</option>
<option value="4.000">4.000</option>
</select>
</div>
<input type="text" size="20" id="income2" name="income2" />
<input type="text" size="20" id="income3" name="income3" />
<input type="hidden" name="citytaxrate" id="citytaxrate">
<input type="submit" name="submit" value="Go!" id="go-calc" class="ui-button">
</div>
</form>
計算進去順序如下:
- 一個城市,用戶在城市字段中鍵入被分配一個數值,其值拉到「citytaxrate」字段中
- 所有值(除「citytaxrate」)都使用通過點擊「Go!」觸發的「calculateum」函數求和。按鈕
- 總和用於「recalc」函數,該函數使用手動插入腳本中的總和,citytaxrate值和其他兩個值。
主要問題是如何使兩個函數在同一次點擊中被觸發。即使在HTML我可以使用
onsubmit="calculatesum(), recalc(); return false"
然而,第一次點擊(提交)只觸發「calculatesum」功能,再點擊一下,就會觸發「重新計算」功能。
@JohnP謝謝你的回答。我是java初學者,我想請你澄清這個「theCommonMethod」部分。我是否必須將其更改爲「onclick」,「onsubmit」或它保留原樣?我必須包含「select_box_1」,因爲它的工作原理 - 當我選擇另一個選項時,「recalc」函數被觸發。 – take2 2011-02-28 11:40:01
你實際上是一個javaSCIPT初學者,java和javascript是不同的:)這裏發生的事情是你的文本框的id爲'select_box_1'在'onchange'事件觸發'theCommonMethod'方法。這個方法又會調用你的其他兩個方法。請記住,當使用jQuery時,你不需要將你的事件綁定在html上,就像'onclick = method()',你可以使用它們的綁定api。 – JohnP 2011-02-28 11:51:38
不知道:) – take2 2011-02-28 11:56:42