Как я могу обновить значение по умолчанию для поля формы после отправки ajax (не сброса формы) - PullRequest
2 голосов
/ 07 января 2012

Я использую jQuery для отправки формы через AJAX.Это обновляет запись базы данных, а затем возвращает ответ в случае успеха или неудачи.У меня проблема не критичная, а скорее для удобства.

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

Чтобы попытаться лучше объяснить это, я покажу свой процесс с полем формы для имени пользователя пользователя.

Username: SomeDefaultUserNameFetched

Затем я изменяюимя пользователя для Foo.

Username: Foo

Я отправляю форму через AJAX и получаю успешный ответ.Затем я решаю, что мне не нравится Foo, и предпочел бы Bar.

Username: Bar

Затем я решаю, что мне не нравится Bar, и Foo был в порядке, поэтому я решил сбросить форму.Сброс формы даст мне:

Username: SomeDefaultUserNameFetched

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

Спасибо, и я действительно надеюсь, что кто-то может подтолкнуть меняв правильном направлении или дайте мне знать, если это вообще возможно.

ОБНОВЛЕНИЕ: Я хотел бы иметь возможность сохранить это в DOM, если это возможно.Где значения по умолчанию хранятся в первую очередь?Я знаю, что могу изменить свой пользовательский сброс формы для обработки установки значений элементов формы, но я старался не вызывать эти издержки, если был способ обновить DOM.

Спасибо за помощь

Ответы [ 4 ]

1 голос
/ 07 января 2012

Есть три способа сделать это:

1) отправьте новый запрос ajax и извлеките данные из базы данных, чтобы при сбросе формы отображались последние данные.

2) сохранить объект JSON (например, form_state), который будет отслеживать последнее действительное состояние формы

3) сохранить значения по умолчанию в некоторых скрытых полях (или даже в качестве атрибутов) и сбросить форму оттуда

0 голосов
/ 06 сентября 2012

Найдено решение: Я нашел это: http://www.w3schools.com/jsref/prop_text_defaultvalue.asp как мое решение.Зацикливаясь на контенте, я могу обновлять значения по умолчанию по мере их изменения.

0 голосов
/ 07 января 2012

Измените кнопку <input type="reset"> на обычную кнопку, а затем добавьте свой собственный обработчик событий щелчка.В вашем ajax submit сохраните значения, которые были отправлены, и в обработчике нажатия кнопки вернитесь к сохраненным значениям:

<input type="button" id="resetForm" value="Reset">

<script>
$("#resetForm").click(function() {
   // restore previously saved form values here
});
</script>

Что касается того, как именно сохранить значения, я оставлю это в качестве упражнениядля читателя ... (Подсказка: я бы либо использовал объект, либо добавил атрибуты данных к каждому элементу формы.)

0 голосов
/ 07 января 2012

Создайте атрибут с именем default:

<input type="text" default="Some Name" id="name" />

Если вы хотите обновить default, просто используйте что-то вроде этого:

$("#name").attr("default","Ivan Castellanos")

И кнопка сброса будет очень простой:

$("#reset_btn").click(function(){
    $("[default]").val(function(){return $(this).attr("default")})
})

Удачи.

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