2011-07-19 33 views
0

以下HTML结构:jQuery,Ajax,Rails:提交一个带有单独userpassword字段的rails表单?

<%= 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 sumbitted工作形式。不过,我希望当前的密码字段不在此表单内,而是在按下submitbutton时出现在叠加层中。

我想知道我该如何解决这个问题?

所以我已经有一个工作ajax提交功能和覆盖。 我打电话提交表单的功能是本triggerAjaxSubmit

function triggerAjaxSubmit(formId) { 

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

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

所以现在我想有当前密码形式的覆盖,因此,我调用注入表单提交了类似的功能。

在formsubmit上,我现在调用以下函数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

您需要发送的所有信息在一个HTTP请求,所以你不应该单独发布表单信息和密码。

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

单击覆盖层上的“提交”按钮时,使用从覆盖层获得的密码设置表单原始“密码”文本框的值。 '密码'输入可以一直隐藏!

因此,用户只能看到一个表单和覆盖的密码提示,而html在表单中包含一个隐藏的密码字段,并且在javascript覆盖中包含一个假密码字段。