jQuery, Ajax, Rails: отправить форму рельсов с отдельным полем пароля пользователя? - PullRequest
0 голосов
/ 19 июля 2011

следующая HTML-структура:

<%= form_for :user, :url => ajax_user_details_path, :html => { :id => 'accountPasswordForm' } do |user| -%>

        <span class="text1" >new password:</span>
        <%= password_field :user, :password, :class => 'input1', :id => 'accountNewPassword' %>

        <span class="text1" >repeat password:</span>
        <%= password_field :user, :password_confirmation, :class => 'input1', :id => 'accountRepeatPassword' %>

        <!-- <span class="text1" >current password:</span>
        <%= password_field :user, :current_password, :class => 'input1', :id => 'accountRepeatPassword' %> -->

        <button class="button1" id="accountPasswordFormSubmit" name="accountPasswordFormSubmit" type="submit" >change password</button>

<% end -%>

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

Интересно, как я могу это решить?

Так что у меня уже есть работающая функция отправки ajax и оверлей. Функция, которую я вызываю для отправки формы: triggerAjaxSubmit:

function triggerAjaxSubmit(formId) {

    $(formId).ajaxSubmit({
        type: "POST",
        dataType: "text json",
        success: function(jsonObject,status) {

            console.log("function() triggerAjaxSubmit : " + status);
        }
    });
}

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

При отправке формы я теперь вызываю следующую функцию triggerAjaxSubmitConfirmation, которая открывает оверлей с полем текущего пароля. После отправки этой последней кнопки я снова вызываю функцию triggerAjaxSubmit.

function triggerAjaxSubmitConfirmation(formId) {

    showOverlay();

    $('.overlay form').submit(function(e) {
        e.preventDefault();
        triggerAjaxSubmit(formId);
    });

}

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

<div class="overlay">
    <%= form_for :user, :url => ajax_user_details_path, :html => { :id => 'accountPasswordForm' } do |user| -%>
        <span class="text1" >current password:</span>
        <%= password_field :user, :current_password, :class => 'input1', :id => 'accountRepeatPassword' %>
    <% end -%>
</div>

Мне просто нужен небольшой совет / подсказка, как на самом деле решить эту проблему! Могу ли я назначить (или передать) «новый пароль» и «повторный пароль» для оверлейной формы через javascript?

Я просто понятия не имею, как это сделать.

Спасибо за вашу помощь

1 Ответ

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

Вам необходимо отправить всю информацию в одном http-запросе, поэтому не следует публиковать информацию о форме и пароль отдельно.

Вместо того, чтобы делать наложение отдельной «формы» со своим собственным HTTP POST, у вас может быть наложение javascript, которое срабатывает при отправке.

При нажатии на кнопку «Отправить» на оверлее установите значение исходного текстового поля «пароль» формы с паролем, полученным из наложения,Ввод пароля можно постоянно скрывать!

Таким образом, пользователь видит только форму и подсказку с наложенным паролем, в то время как html содержит скрытое поле пароля в форме и поддельное поле пароляв оверлее javascript.

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