实时计算JQuery

实时计算JQuery,jquery,html,Jquery,Html,我正在尝试执行实时计算,但它不适合我。我避免使用id选择器在多个表单上应用相同的代码 函数OgKeyPress(){ 风险值金额=$(此); var s=金额。价值; var tax=$(this).closest(“table”).find(“tr td div”).first().find(“p输入”); var total=$(this).closest(“table”).find(“tr td div”).last().find(“p输入”); var t=税收。价值=(1/10)。固

我正在尝试执行实时计算,但它不适合我。我避免使用id选择器在多个表单上应用相同的代码

函数OgKeyPress(){ 风险值金额=$(此); var s=金额。价值; var tax=$(this).closest(“table”).find(“tr td div”).first().find(“p输入”); var total=$(this).closest(“table”).find(“tr td div”).last().find(“p输入”); var t=税收。价值=(1/10)。固定(1); 总值=个数+个数(t); }

全部的


这里有几个问题。首先,主要的问题是因为你的HTML是无效的;不能将
div
作为
表的子级。它需要在
tr
td
th
中。这就是为什么
closest()
不起作用的原因,因为渲染器正在将
div
移到表外以使HTML有效

您还声明不想使用
id
属性,因为此HTLM结构是重复的,可以使用
class
属性。然后,您可以为所有这些元素分组相同的功能,而无需复制JS

您也不应该在*
内联事件处理程序上使用
。除了大量过时之外,它们不保留引发元素的元素的范围,因此
引用很可能是
窗口
,从而导致计算逻辑出现问题。要解决此问题,请使用不引人注目的事件处理程序,例如jQuery的
on()
input
事件,其中还包括使用鼠标粘贴内容

说了这么多,试试这个:

$(函数(){
$('.amount')。在('input',function()上{
var$金额=$(本);
var$table=$amount.closest('table');
var$tax=$table.find(“.tax”);
var$total=$table.find(“.total”);
var税=浮动汇率((1/10).toFixed(1));
$tax.val(税);
$total.val(parseFloat($amount.val())+税);
});
});

全部的


thx需要很多帮助。你说得对,税是根据金额而定的。如何设置基于金额的报表是否应执行不同的税务计算。我更新了上面的代码。使用if语句,但它只适用于cretin Numbers我看不到上述代码的任何更新?不管怎样,我建议你为任何其他问题开始一个新的问题