2011-02-28 125 views
0

我正在創建一個稅計算器,並有一些綁定事件的問題。有五個字段:在jQuery中綁定事件(雙擊事件點擊...)

  1. 一個文本字段。用戶必須鍵入他的城市,腳本會爲文本值分配一個數字。例如,您輸入「New York」,當您點擊「Go!」時,系統會爲其分配0.1。
  2. 滑塊。當您移動滑塊時,該字段中的數字會發生變化。
  3. 選擇帶有幾個數字值的框。
  4. 和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> 

計算進去順序如下:

  1. 一個城市,用戶在城市字段中鍵入被分配一個數值,其值拉到「citytaxrate」字段中
  2. 所有值(除「citytaxrate」)都使用通過點擊「Go!」觸發的「calculateum」函數求和。按鈕
  3. 總和用於「recalc」函數,該函數使用手動插入腳本中的總和,citytaxrate值和其他兩個值。

主要問題是如何使兩個函數在同一次點擊中被觸發。即使在HTML我可以使用

onsubmit="calculatesum(), recalc(); return false" 

然而,第一次點擊(提交)只觸發「calculatesum」功能,再點擊一下,就會觸發「重新計算」功能。

回答

2

那麼,如果你想要將兩個方法綁定到同一個事件,你可以簡單地把它們放在一個方法中並調用它。我從來沒有將兩種方法綁定在一起,因此無法評論雙重綁定失敗的原因。

$("#select_box_1").change(theCommonMethod); 

function theCommonMethod() { 
    recalc(); 
    calculatesum(); 
} 

如果您在jsfiddle.net上提供了一些代碼示例,我們也可以幫助您解決第二個問題。

編輯

您的更新後,我貼大部分與您想綁定的事件的基本小提琴。看看這個:http://jsfiddle.net/jomanlk/v5mRe/1/

只需使用jQuery選擇來獲得你想要的值,然後做你的計算和更新您的文本字段。當您更改控制

+0

@JohnP謝謝你的回答。我是java初學者,我想請你澄清這個「theCommonMethod」部分。我是否必須將其更改爲「onclick」,「onsubmit」或它保留原樣?我必須包含「select_box_1」,因爲它的工作原理 - 當我選擇另一個選項時,「recalc」函數被觸發。 – take2 2011-02-28 11:40:01

+0

你實際上是一個javaSCIPT初學者,java和javascript是不同的:)這裏發生的事情是你的文本框的id爲'select_box_1'在'onchange'事件觸發'theCommonMethod'方法。這個方法又會調用你的其他兩個方法。請記住,當使用jQuery時,你不需要將你的事件綁定在html上,就像'onclick = method()',你可以使用它們的綁定api。 – JohnP 2011-02-28 11:51:38

+0

不知道:) – take2 2011-02-28 11:56:42

0

變化只得到觸發(當你從一個文本框切換到其他文本框)。如果文本框的內容發生更改,則不會觸發它。在城市領域

使用KEYUP或觸發的keydown火重計算功能。

+0

問題是某人輸入了城市,並且分配給該城市的號碼被另一個div拉入。這個另外的div和它裏面的值用於計算,而不是「城市」字段本身。所以我不能使用keyup或down,因爲用戶看不到div(它是隱藏的),並且他們不能輸入任何東西。因此,我正在尋找能夠識別該領域價值變化的東西。 – take2 2011-02-28 11:43:20