Как определить, изменилось ли значение ввода формы с момента установки - PullRequest
0 голосов
/ 29 октября 2011

В настоящее время я создаю пользовательскую CMS.Конкретный раздел, над которым я работаю, связан с управлением фотогалереей.На странице, где пользователь может обновить информацию в определенном альбоме, я использую jQuery $.ajax, чтобы выполнить много обновлений.

Например, каждое изображение имеет поле с заголовком рядом с ним, и я связываю событие focusout с моим вызовом ajax, который работает очень хорошо и позволяет пользователю быстро пролистывать и обновлять всеподписи к фотографиям.

Однако, поскольку я связываю событие focusout, его, скорее всего, будут называть много, особенно когда в этом нет необходимости.Скажем, например, они пролистывают три поля, которые они не меняют.$.ajax вызов будет выполняться при каждом нажатии клавиши Tab, даже если они не изменили входное значение.

Итак, мой вопрос: как вы можете сохранить и определить, отличается ли значение от того, чтоэто было изначально (или в последний раз был сделан вызов ajax)?

Можно ли это сделать с помощью .data()?

в jQuery

Ответы [ 3 ]

1 голос
/ 29 октября 2011

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

Вы можете написать все это сами, но за последние несколько лет появилось немало фреймворков, которые делают это очень хорошо. Среди них:

Backbone.js

Spine.js

Knockout.js

Магистраль кажется наиболее популярной из них.

0 голосов
/ 29 октября 2011

Решено с использованием очень простого jQuery:

в document.ready:

$('.caption_field').each(function() {
    var startval = $(this).val();
    $(this).data('setval',startval);
});

Затем, когда сделан вызов ajax:

if (caption == $(this).data('setval')) return; // not changed

Когда вызов возвращаетсяуспешно:

field.data('setval',caption);
0 голосов
/ 29 октября 2011

Необходимо сохранить скрытые исходные значения в типе ввода и сравнивать исходные и текущие значения в каждом событии фокуса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...