我正在创建一个税收计算器,并且在绑定事件方面存在一些问题。有五个领域:
所有这些字段都采用称为“taxcalculator”的形式。提交时,会触发一个名为“calculateum”的函数。问题是我必须使用jquery计算插件和名为“recalc”的函数将该总和用于另一个计算。所以,让我们假设某人填写了上述字段,但想要更改第一个字段中的某些数字或文本。我想重新计算每次更改的其他计算。我设法将选择框更改绑定到:
$("[id=select_box_1]").bind("change", recalc);
并使用类似代码更改滑块。
然而,在两种情况下触发“重新计算”存在问题。
1:单击“开始!”开始计算时按钮,只触发一个功能。当我点击“开始”按钮时,我想完成它,两个功能都被触发(calculateum和recalc)。但是,只触发“calculateum”,我必须使用“mousemove”或再次单击该按钮以使用其他功能。
2:用户可以更改第一个字段中输入的城市。在这种情况下,数值会更改,但数字字段是隐藏的,我不知道用于触发“重新计算”功能的属性。我认为“改变”是合乎逻辑的选择,考虑到该领域的价值会发生变化,但它不起作用。
以下是我的代码的一部分:
<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>
计算按此顺序进行:
主要问题是如何在同一次点击时触发这两个功能。即使在HTML中我也可以使用
onsubmit="calculatesum(), recalc(); return false"
但是,首先单击(提交)仅触发“calculateum”功能,另一次单击将触发“recalc”功能。
答案 0 :(得分:2)
好吧,如果你想将两个方法绑定到同一个事件,你可以简单地将它们放在一个方法中并调用它。我从来没有将两种方法绑定在一起,所以不能评论为什么双重绑定失败。
$("#select_box_1").change(theCommonMethod);
function theCommonMethod() {
recalc();
calculatesum();
}
如果你在jsfiddle.net上提供了一些代码示例,我们也可以帮你解决第二个问题。
编辑
更新后,我发布了一个基本的小提琴,其中包含您想要绑定的大多数事件。看看这个:http://jsfiddle.net/jomanlk/v5mRe/1/
只需使用jQuery选择器获取所需的值,然后进行计算并更新文本字段。
答案 1 :(得分:0)
更改控件时更改仅获取触发器(从一个文本框切换到其他文本框时)。如果文本框的内容发生更改,则不会触发它。
在city字段中使用keyup或keydown触发器来触发recalc函数。