2013-09-03 2 views
0

Что такое хороший способ сохранения формы данных без кнопки отправки?Сохранение формы данных без кнопки

У меня есть одна идея. Ниже примерный исходный код.

var delay = 1000, 
     timeId, 
     ajax, 
     //fw is some framework 
     form = fw.get('myform'); 

form.getFields().on('change', changeEventHandler); 

function changeEventHandler() { 
    clearTimeout(timeId); 
    timeId = setTimeout(this.ajaxRequest, delay); 
} 

function ajaxRequest() { 
    //What do with old ajax request? Abort it? 
    ajax = fw.ajax({ 
     url: 'ololo', 
     params: { 
      data: form.getValues() 
     } 
    }); 
} 

Что делать со старым запросом ajax? Отменить его?

Есть ли у кого-нибудь другие идеи?

+0

Если вызов 'fw.ajax()' второй раз заменяет ожидающие запросы запросы или добавляет новый, это зависит от того, что оно предназначено для выполнения. –

ответ

1

У меня была аналогичная проблема при создании интерактивной формы без кнопки сохранения.

Прежде всего, это не рекомендуется хранить данные при каждом изменении. Я использовал событие размытия, поэтому, когда вход теряет фокус, я проверяю, было ли изменено значение (т. Е. Не только фокус-размытие на входе), если он был изменен, я отключил вход и отправил запрос ajax. Когда запрос вернется, я снова включил ввод (возможно, отобразив ошибку, если ошибка ajax и т. Д., Зависит от ваших потребностей).

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

+0

Если пользователь закроет окно? И размытие событий полей не работает, после того как я сосредоточусь на других компонентах своего ui. – user2417329

+0

Это цена, которую вы должны заплатить. Любой вызов Ajax, который сохраняет данные, может быть прерван пользователем, закрывающим браузер. Если вы хотите иметь глобальный var, который говорит, что если есть запрос Ajax, и если это так - отобразите предупреждающее сообщение, когда пользователь закрывает окно браузера. Лично - я ненавижу сайты, делающие это. С другой стороны, обновление БД на каждый символ, который пользователь изменяет, также не очень хорошая идея. Событие размытия должно работать каждый раз, когда элемент теряет фокус. –

+0

Событие Blur не работает, только когда я фокусируюсь на контейнере карты (я использую буклет js). P.S. Мое приложение - RIA. – user2417329

Смежные вопросы