【问题标题】:jQuery, Ajax, Rails: submit a rails form with a seperate userpassword field?jQuery、Ajax、Rails:提交带有单独用户密码字段的 rails 表单?
【发布时间】:2011-07-19 19:35:10
【问题描述】:

以下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);
    });

}

我的问题是我不知道这实际上应该如何工作! 现在我在上面的代码示例中注释掉了当前密码字段。 popup-overlay 中的代码与当前密码字段的功能相同。

<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将“新密码”和“重复密码”分配(或移交)给覆盖表单吗?

我根本不知道该怎么做。

感谢您的帮助

【问题讨论】:

    标签: jquery ruby-on-rails ruby ajax forms


    【解决方案1】:

    您需要在一个http请求中发送所有信息,因此您不应单独发布表单信息和密码。

    您可以拥有一个在提交时触发的 javascript 覆盖,而不是使用它自己的 http POST 将覆盖设置为单独的“表单”。

    点击叠加层上的“提交”按钮时,将表单的原始“密码”文本框的值设置为从叠加层获得的密码。 “密码”输入可以一直隐藏!

    所以用户只看到一个表单,以及覆盖的密码提示,而 html 包含表单中的隐藏密码字段,以及 javascript 覆盖中的虚假密码字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      相关资源
      最近更新 更多