【问题标题】:using facebox to submit a form使用facebox提交表单
【发布时间】:2011-05-20 17:45:18
【问题描述】:

我在 Rails 中有一个可以运行的应用程序,我想在其中添加一些 ajaxiness。

我目前有一个 Multistep 表单并希望执行以下操作:

  • 第 1 步的用户点击“提交”(表单被提交)
  • fancybox 启动显示注册表单和“注册”或“跳过”按钮
  • 无论是在花哨的框中单击“注册”还是“跳过”,用户都会转到我的应用程序的第 2 步。

我正在搜索 launching fancybox on form submitsubmitting form via fancybox

在演示中我什么也没找到。

在我使用fancybox 之前,有人使用fancybox 插件完成了这个工作流程吗?

我阅读了一些SO questions 的用户在提交表单时遇到问题。我提到的工作流程有更好的插件吗?

【问题讨论】:

    标签: jquery ruby-on-rails ajax fancybox


    【解决方案1】:

    我已经做了一个与fancybox类似的实现。我有一个用户结帐,在单击结帐时,会出现一个带有问题提示的花式框。在显示提示之前,它会提交表单。这是我使用的代码的大纲:

    我将表单提交按钮更改为链接:

    <a id='various2' href='#submitform'>Submit</a>
    

    将fancybox绑定到链接并添加一个oncomplete以在fancybox打开后立即处理表单:

    $(document).ready(function() {
    
    
                $("#various2").fancybox({
                    'cache' : false,
                    'hideOnOverlayClick' : false,
                    'showCloseButton'   : false,
                    'autoDimensions'    : false,
                    'width'             : 650,
                    'titlePosition'     : 'inside',
                    'transitionIn'      : 'fade',
                    'transitionOut'     : 'fade',
                    'scrolling'         : 'no',
    
                    'onComplete'            : function(){
                        processform();
                    }
                });
    });
    

    有一个 javascript 函数来使用 ajax 处理表单,然后显示您的登录/创建帐户信息。如果是我,我会进行另一个 ajax 调用以显示您的登录/注册,但我已将那部分代码留了下来,但用注释表示,您可以在其中调用它:

    function processform(){
            var idcardnumber1 = jQuery("#field1").val();
            var idcardnumber2 = jQuery("#field2").val();
            $.ajax({
                cache : false, 
               type: "POST",
               url: "processform.php",
               data: "field1="+field1+"&field2="+field2,
                dataType: "json",
               success: function(data){
                if(data.valid == 1){
                 // Display Your Login Signup Form
                }
                else{
                    // Close Fancybox since the form did not submit
    
                    $.fancybox.close();
                }
    
    
               }
             });
        }
    

    【讨论】:

    • 我正在寻找一种不将按钮变成超链接的方法。此外,我的表单有 20 多个字段,并且像在 processForm() 方法中那样传递它们将非常麻烦,并且将来也难以调试。我会留意其他选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2018-12-29
    • 2012-02-10
    • 1970-01-01
    • 2017-12-23
    • 2016-11-04
    相关资源
    最近更新 更多