JQuery: получить исходное значение ввода - PullRequest
21 голосов
/ 13 декабря 2011

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

Например:

<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(), чтобы вернуть форму в исходное состояние.

Ответы [ 7 ]

32 голосов
/ 13 декабря 2011

Попробуйте это:

$("#one")[0].defaultValue;
14 голосов
/ 13 декабря 2011

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

element.getAttribute('value');

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

Демо

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

9 голосов
/ 13 декабря 2011

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

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

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

Обновлен jsFiddle - после замены на «два» вышеприведенное вернет «один».

2 голосов
/ 13 декабря 2011

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

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

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

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

$("#one").attr("origvalue");
0 голосов
/ 13 декабря 2011
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 );
});
0 голосов
/ 13 декабря 2011

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

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

А потом вы можете легко получить его позже, как это:

console.log($('#one').data('val'));
0 голосов
/ 13 декабря 2011
Save the original_values @ document.ready.

$(function(){
  var original_values = $.map($('form input'), function(input){ return $(input).val() });
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...