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 ); });