在jQuery中绑定事件(双击事件点击...)

在jQuery中绑定事件(双击事件点击...)

问题描述:

我正在创建一个税计算器,并有一些绑定事件的问题。有五个字段:在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”功能,再点击一下,就会触发“重新计算”功能。

那么,如果你想要将两个方法绑定到同一个事件,你可以简单地把它们放在一个方法中并调用它。我从来没有将两种方法绑定在一起,因此无法评论双重绑定失败的原因。

$("#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

变化只得到触发(当你从一个文本框切换到其他文本框)。如果文本框的内容发生更改,则不会触发它。在城市领域

使用KEYUP或触发的keydown火重计算功能。

+0

问题是某人输入了城市,并且分配给该城市的号码被另一个div拉入。这个另外的div和它里面的值用于计算,而不是“城市”字段本身。所以我不能使用keyup或down,因为用户看不到div(它是隐藏的),并且他们不能输入任何东西。因此,我正在寻找能够识别该领域价值变化的东西。 – take2 2011-02-28 11:43:20