Asp.net 使用JQuery设置';肮脏';元素返回到原始值

Asp.net 使用JQuery设置';肮脏';元素返回到原始值,asp.net,jquery,Asp.net,Jquery,我有一个Javascript对象,它基本上表示.NETGridView中的一行。 当用户单击网格中的任何一行时,该行中的所有输入元素都将被“启用”(即“编辑”模式) 我根据选择的行运行此代码 $(":input", this._row).attr('disabled', true); or $(":input", this._row).removeAttr('disabled'); 到目前为止还不错。现在,我想在用户进入“编辑模式”之前跟踪该行中的值,这样,如果他们决定单击该行而不保存所做的任

我有一个Javascript对象,它基本上表示.NETGridView中的一行。 当用户单击网格中的任何一行时,该行中的所有输入元素都将被“启用”(即“编辑”模式)

我根据选择的行运行此代码

$(":input", this._row).attr('disabled', true);
or
$(":input", this._row).removeAttr('disabled');
到目前为止还不错。现在,我想在用户进入“编辑模式”之前跟踪该行中的值,这样,如果他们决定单击该行而不保存所做的任何更改,我就可以恢复原始值

因此,我通过以下操作捕获数组中的原始值:

var $inputs = $(":input", this._row);
var values = {}; 
$inputs.each(function(i, el) { values[el.name] = $(el).val(); });
“值”数组现在如下所示:

ctl00$ContentPlaceHolder1$resultsGrid$ctl04$COMPONENT1    "56"  
ctl00$ContentPlaceHolder1$resultsGrid$ctl04$COMPONENT2    "98"  
ctl00$ContentPlaceHolder1$resultsGrid$ctl04$COMPONENT3        "08"
ctl00$ContentPlaceHolder1$resultsGrid$ctl04$COMPONENT4    "200" 
到目前为止很好。然后,用户可以修改这些值,但决定不保存更改。 因此,我需要从“values”数组中将此行还原回其原始值。 有人能告诉我最好的方法吗?我希望它很简单,但我还不是jquery专家


谢谢

我还没有时间设置测试,但我会立即尝试:

$inputs.each(函数(i,el){$(el).val(值[el.name]);})


假设您已经检查了值是否已存储。

您是否可以不复制html行并存储它,然后如果它们在那里更改,您可以只恢复原始行?

您可以使用“数据方法”(data method)将相关数据与元素一起存储

比如:

//Call this function for each row after the page has loaded. 
function storeOriginalData(row)
{        
    var $inputs = $(":input", row);
    //For each input element inside the table row, we store it's original value 
    //using the 'data' method of jQuery.
    $inputs.each(function(i, el) { $(el).data('oldValue', el.val()); });    
}

//Call this function from the reset button code. 
function resetOriginalData(row)
{
    var $inputs = $(":input", row);
    //Now we get the original value using the data method and store it in the input element.
    $inputs.each(function(i, el) { $(el).val($el.data('oldValue')); 
};
这样,您将避免维护每行的“values”对象

编辑:


修改了代码,提供了更多详细信息及其工作方式

我试图使用/理解这一点,但我如何准确地存储原始数据,以便稍后重置?第一个“inputs.each”函数实际上创建了什么?你能再详细一点吗?谢谢“数据方法”允许您将任何类型的数据与jQuery元素相关联。这意味着您不需要在代码中使用“values”对象并维护其状态。我已经用注释修改了代码,如果您还有其他问题,请告诉我。非常感谢您采取额外的步骤进行解释。很好!!非常感谢我很好地存储了原始innerHTML值,但是当我稍后获取该行并尝试将其设置为旧值时,我得到一个“未知运行时错误”。有什么想法吗?谢谢