JQuery - сравнить новое значение со старым значением при отправке формы, по всем полям (входы, выбирает)? - PullRequest
0 голосов
/ 21 июля 2011

Я читал ответ на этот вопрос , но это решило проблему только с одним полем, как бы я посмотрел все поля (вход, выбор, радио и т. Д.) Наформа?

Это то, что у меня сейчас есть (я использую делегат, эта форма динамически добавляется на страницу):

$('#preferencesBody').delegate('input[type="radio"], select', 'change', function() {
    var key = $(this).attr('data-key');
    var value = $(this).val();

    // How to get the old value, and compare with the current value, if they are different, call saveUserPreferences?

    Preferences.saveUserPreferences(key, value);
});

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Я свернул свою собственную реализацию, используя дополнительный атрибут при привязке моих данных и сравнивая значение со значением дополнительного атрибута, то есть:

$('#preferencesBody').delegate('input[type="text"]:not(.password)', 'blur', function() {
    var value = $(this).val();
    var currentValue = $(this).attr('data-currentvalue');

    if (value !== currentValue) {
        $(this).attr('data-currentvalue', value);
        Preferences.saveUserPreferences(value);
    }
});
1 голос
/ 21 июля 2011

$('#formID :input')

выберет все поля ввода (включая текстовые области и кнопки) в форме с помощью id=formID

, чтобы ваша функция выглядела следующим образом ..

$('#preferencesBody').delegate(':input', 'change', function() {
  var key = $(this).attr('data-key');
  var value = $(this).val();

  Preferences.saveUserPreferences(key, value);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...