我有一个tableorter表,可以正确填写。我要做的是确保单元格的编辑速度不超过原始值的10%。例如,如果第一行中的第一个单元格中的价格字段(由id #price表示)设置为6.00,下一行中的下一个金额为5.00,我希望能够更改任一价格,或同时更改两者,但不超过10%(例如6变为6.60)。这是我到目前为止:
$('#tally tr').live ('click', function(){
var tempPrice =0;
tempPrice = $(this).find('#price').val();
// Which selects the correct row and price field and will store that value in tempPrice.
$('#price').change(function(){
var pnew =0;
$('#tally tbody tr').each(function() {
if ($('#price').val() > (tempPrice*1.1)){
pnew = tempPrice*1.1;
$('#price').val(pnew.toFixed(2));
alert("Your cannot raise the price by more than 10%");
}
}); //end of tbody tr function
}); // end of change function
}); // end of new price change function
改变价格并确保价格不超过10%。这些函数可以改变第一个单元格,但是如果我要更改第二个单元格,我就无法使价格变化功能起作用。此外,如果这不够复杂,如果我尝试先更改第二个单元格,然后尝试第一个单元格,它将保留第二个单元格的pnew
价格,然后将使用该数字更新表格(如上例中的5),然后它将使用正确的数字(6.60)更新单元格。
如何让我按照我需要的方式工作? 编辑:价格可以降低用户想要的价格,而不是提高10%以上。
答案 0 :(得分:0)
首先你应该有3个变量,一个存储价格,一个是上限(* 1.1),另一个是下限(* 0.9)。
然后,您需要使用$('input').focus()
获取原始值,并$('input').blur()
在用户完成后运行验证。
问题是,当您有多个输入时,很难跟踪临时价格值,因为用户可以点击,因此您需要有一个变量来跟踪最近的输入选择器,因此模糊可以验证
var $current_element;
var temp_price;
var l_price;
var h_price;
$('input').focus(function() {
$current_element = $(this);
temp_price = $(this).value();
});
$('input').blur(function() {
var value = $current_element.value();
h_price = value * 1.1;
l_price = value * 0.9;
// Do validation of prices here and then either alert()
// or set $current_element.value(temp_price)
// If validation fails call $current_element.focus() to return the user there
});
否则请查看此选项:https://stackoverflow.com/a/10393958/1160747
哦,正如其他人所提到的...... ID应该是一个元素唯一的,使用多个元素的类!