【发布时间】:2016-09-08 14:55:25
【问题描述】:
此代码部分有效。它正确地更改了表格中的每个输入框,但我还需要调用它的 .change() 事件,以便它正确地对其他部分进行一些数学运算。
此 change() 事件有效,但仅在数据表的当前页面上有效。我转到其他页面,但没有计算数学。
table.on('dblclick', '[name="markupControl"]', function () {
var value = parseFloat($(this).val()).toFixed(2);
table.api().column(7).nodes().to$().find('input').val(value).change();
});
当他们双击一个输入框时,它需要更改所有其他输入框的标记值,然后它需要调用更改事件,该事件应用一些数学来确保所有其他输入框的所有内容都相加。下面是它应该触发的更改事件。
table.on('change', '[name="markupControl"]', function () {
// Get the rate id from this element
var rateid = $(this).data('rateid');
// Pricing variables
var cost = parseFloat($('div[name="costControl"][data-rateid="' + rateid + '"]').text().replace("$", '').replace(",", ''));
var markup = parseFloat($(this).val());
// Update the Retail price for the correct plan retail box
var retailControl = $('input[name="retailControl"][data-rateid="' + rateid + '"]');
var newRetail = parseFloat(cost + markup).toFixed(2);
retailControl.val(newRetail);
// Force this control to go back to 2 decimals
$(this).val(markup.toFixed(2));
// Needed for later so we can call the change event on the retail control
retailControl.change();
});
我假设.change() 事件不会在其他页面上通过双击触发输入框。不知道我缺少什么来完成这项工作。
编辑:
这是一个代表我的问题的 jsfiddle。更改任何标记列,然后双击该输入框,您将看到一切正常,直到您切换到下一页。
【问题讨论】:
-
无论使用 find('input') 找到什么,都会触发 change() 事件,但事件侦听器正在寻找 '[name="markupControl"]' 上的更改。这些是不同的东西吗?
-
@Adam name="markupControl" 是输入框。这一切都非常适合我正在查看的页面。但是当我切换页面时,值会改变,但数学并没有像我正在查看的页面上那样正确地加起来。
-
@Adam 我添加了一个 jsfiddle,它显示了我的问题的一个示例。
标签: jquery datatables