2015-06-01 4 views
3

У меня есть ОГРОМНАЯ форма, которую я намерен для персонала по обеспечению качества использовать OFFLINE в сборе данных для ежегодных обзоров качества продукции. Из-за сложности нормативных требований эта форма содержит более 1900 полей и радио-кнопок.HTML5 localStorage use

В настоящее время я вызываю localStorage через sisyphus.js, и он работает - сохранение данных для всех полей просто отлично.

Моя проблема заключается в том, что при загрузке требуется 7 секунд, чтобы форма завершила загрузку - ей было дано много времени, но это не настоящая проблема. Моя проблема REAL заключается в том, что после внесения какой-либо записи потребуется немного больше двух секунд после события onblur, чтобы форма приняла больше ввода.

Вот мой код:

$('form').sisyphus({ 
    locationBased: false, 
    timeout: 10, 
    autoRelease: false 
}); 

Мой вопрос: есть ли способ вызова хранения данных по усмотрению пользователя, возможно, с помощью кнопки, или каким-либо другим способом, чтобы предотвратить постоянное прерывание ввода данных?

У кого-нибудь есть идеи?

+0

Я бы просмотрел отладчик javascript, чтобы узнать, что в javascript так долго обрабатывается. Возможно, 'sisyphus' перебирает каждый элемент, чтобы сохранить всю форму вместо одного элемента. На этом уровне вам нужно искать любую оптимизацию. – FrankerZ

+0

может быть разбит на несколько более мелких форм? – Markasoftware

+0

@FrankerZ - Я изучу его, но мой вопрос действительно является одним из функциональных возможностей. Возможно ли ВОЗМОЖНО вызывать localStorage с перерывами, а не настойчиво, что, по-видимому, имеет место во всех локальных плагинах localStorage javaScript, которые я нашел. –

ответ

2

Плагин, который вы используете (sisyphus.js), кажется, не был написан для обработки «большого» количества полей.

Если посмотреть на источник:

https://raw.githubusercontent.com/simsalabim/sisyphus/master/sisyphus.js

Вы увидите, что есть метод saveAllData. В сочетании с методом bindSaveDataOnChange он сохраняет все поля каждый раз при изменении поля.

И если это не так, вы все равно получите 2-секундный лаг каждые 10 секунд (опция таймаута).

Быстрое исправление, я надеюсь, будет состоять в том, чтобы форк/изменить или переопределить плагин, чтобы обнулить метод bindSaveDataOnChange и реализовать крючок для сохранения данных формы при нажатии кнопки. И, возможно, удаление или увеличение опции timeout.

+0

OK - вы получаете подтверждение за быстрый запуск в триггер с очень полным ответом на мой вопрос. Спасибо, что указал мне место в sisyphus.js, которое даст мне то, что мне нужно. –