在jQuery中绑定事件(双击事件点击...)
我正在创建一个税计算器,并有一些绑定事件的问题。有五个字段:在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”功能,再点击一下,就会触发“重新计算”功能。
那么,如果你想要将两个方法绑定到同一个事件,你可以简单地把它们放在一个方法中并调用它。我从来没有将两种方法绑定在一起,因此无法评论双重绑定失败的原因。
$("#select_box_1").change(theCommonMethod);
function theCommonMethod() {
recalc();
calculatesum();
}
如果您在jsfiddle.net上提供了一些代码示例,我们也可以帮助您解决第二个问题。
编辑
您的更新后,我贴大部分与您想绑定的事件的基本小提琴。看看这个:http://jsfiddle.net/jomanlk/v5mRe/1/
只需使用jQuery选择来获得你想要的值,然后做你的计算和更新您的文本字段。当您更改控制
变化只得到触发(当你从一个文本框切换到其他文本框)。如果文本框的内容发生更改,则不会触发它。在城市领域
使用KEYUP或触发的keydown火重计算功能。
问题是某人输入了城市,并且分配给该城市的号码被另一个div拉入。这个另外的div和它里面的值用于计算,而不是“城市”字段本身。所以我不能使用keyup或down,因为用户看不到div(它是隐藏的),并且他们不能输入任何东西。因此,我正在寻找能够识别该领域价值变化的东西。 – take2 2011-02-28 11:43:20
@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