Установка значения текстовых полей с одним из их атрибутов (jQuery) - PullRequest
1 голос
/ 06 мая 2010

У меня есть набор текстовых полей ввода, в которых атрибут ORIGINAL имеет начальное значение, поэтому, когда пользователь изменяет значение текстового поля, jQuery может выделять элементы, которые изменились (сравнивая текущее значение текстового поля с ORIGINAL. значение атрибута)

То, что я сейчас пытаюсь сделать, это предоставить пользователю кнопку, которую он может нажать, чтобы вернуть все текстовые поля обратно к их исходным значениям на основе значения атрибута ORIGINAL каждого текстового поля.

Пример

$('input[type=text]').val($(this).attr('original'));

Выше не работает, и я не понимаю, почему.

Ответы [ 4 ]

3 голосов
/ 06 мая 2010

Использование each:

$('input:text').each(function() {
    $(this).val($(this).attr('original')); // or this.value = $(this).attr('original');
});

Нельзя использовать однострочник, так как $('input[type=text]').val() будет возвращать только значение первого элемента в соответствующей коллекции. $(this) не означает, что вы думаете, что делает в вашем примере:

$('input[type=text]').val($(this).attr('original'));

Фактически это относится к текущей области видимости. Когда вы перебираете коллекцию с помощью each, jQuery вызывает ее обратный вызов и присваивает элемент current в итерации в качестве текущей области ($(this) или this).

Как примечание: input:text - более симпатичный, более краткий способ сказать input[type=text].

0 голосов
/ 06 мая 2010

val принимает функцию:

$('input:text').val(function () {
    return $(this).attr('original');
});
0 голосов
/ 06 мая 2010

Вы можете вызвать .defaultValue для любого входа, чтобы получить его первоначальное значение

0 голосов
/ 06 мая 2010

Примерно так:

$('input[type=text]')each(function(){$(this).val($(this).attr('original'));}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...