使用jquery和tablesorter,更改所选单元格的值

时间:2013-04-04 14:34:12

标签: javascript jquery tablesorter

我有一个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%以上。

1 个答案:

答案 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应该是一个元素唯一的,使用多个元素的类!