JQuery:获取原始输入值

是否可以获取表单输入字段的初始值?

例如:

$("#one").attr("value"); //would output "one" $("#one").val(); //would output "one" $("#one").get(0).value; //would output "one"

但是,如果用户随后将#one输入字段的内容更改为2,则html看起来仍然相同(其中一个作为值),但上面的JQuery调用将返回两个。

JSFiddle玩: http : //jsfiddle.net/WRKHk/

我认为仍然可以获得原始值,因为我们可以调用document.forms["formId"].reset()将表单重置为其原始状态。

DOM元素具有属性“value”,您可以通过以下方式访问该属性:

 element.getAttribute('value'); 

…可能与元素的属性 value

演示

请注意,您可以调用.setAttribute('value', 'new value') ,这将实际影响之后调用的任何form.reset()

试试这个:

 $("#one")[0].defaultValue; 

输入元素得到名为defaultValue属性,用于存储原始值。

要通过jQuery访问它,只需使用.prop()

 var value = $(this).prop("defaultValue"); 

更新了jsFiddle – 更改为“two”后,上面将返回“one”。

HTML确实发生了变化。 只是浏览器的默认视图源工具始终显示从服务器获取的原始源。 如果你使用像Firebug这样的东西,你将能够看到HTML中的动态变化。

获取初始值的一种方法是将其存储在除“值”之外的附加属性中。 例如,如果您提供的HTML如下:

  

您始终可以通过调用以获取原始值:

 $("#one").attr("origvalue"); 
 Save the original_values @ document.ready. $(function(){ var original_values = $.map($('form input'), function(input){ return $(input).val() }); }) 

您可以尝试将值存储在数据中。 例如:

 $('#one').data('val',$('#one').val()); 

然后您可以像以下一样轻松地检索它:

 console.log($('#one').data('val')); 
 var initialVal = $('#one').val(); alert(initialVal); $('#one').live("focusout", function() { var attribute = $("#one").attr("value"); var value = $(this).val(); var get = $(this).get(0).value; alert( "Attribute: " + attribute + "\n\nValue: " + value + "\n\ninit val: " + initialVal +"\n\nGet: " + get ); });