Подтвердить что ты не робот

JQuery: получить исходное значение ввода

Можно ли получить начальное значение поля ввода формы?

Например:

<form action="" id="formId">
    <input type="text" name="one" value="one" id="one" />
</form>

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

Однако, если пользователь затем изменил содержимое поля ввода #one на два, html все равно будет выглядеть одинаково (с одним значением), но вызовы JQuery выше вернут два.

JSFiddle, чтобы играть с: http://jsfiddle.net/WRKHk/

Я думаю, что это все равно возможно получить оригинальную ценность, поскольку мы можем вызвать document.forms["formId"].reset() в reset форму в ее исходное состояние.

4b9b3361

Ответ 1

Элемент DOM имеет атрибут "значение", к которому вы можете получить доступ:

element.getAttribute('value');

... который может отличаться от свойства элемента value.

Демо

Обратите внимание, что вы можете вызвать .setAttribute('value', 'new value'), который фактически повлияет на любой вызываемый form.reset().

Ответ 2

Попробуйте следующее:

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

Ответ 3

Входной элемент получил свойство с именем defaultValue, которое хранит исходное значение.

Чтобы добраться до него через jQuery, просто используйте .prop():

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

Обновлен jsFiddle - после перехода на "два" выше будет возвращено "одно".

Ответ 4

HTML действительно меняется. Просто, что инструмент поиска по умолчанию для браузера по умолчанию всегда показывает исходный источник, полученный с сервера. Если вы используете что-то вроде Firebug, вы сможете увидеть динамические изменения в HTML.

Одним из способов получения начального значения является сохранение его в дополнительном атрибуте в дополнение к "значению". Например, если вы используете свой HTML-код, например:

<input type="text" name="one" value="one" origvalue="one" id="one" />

Вы всегда можете вернуть исходное значение, вызвав:

$("#one").attr("origvalue");

Ответ 5

Save the original_values @ document.ready.

$(function(){
  var original_values = $.map($('form input'), function(input){ return $(input).val() });
})

Ответ 6

Вы можете попробовать сохранить значение в данных. Например:

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

И тогда вы можете легко получить его позже следующим образом:

console.log($('#one').data('val'));

Ответ 7

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