从Form input type ="submit"打开Fancybox(或equiv)

nic*_*rss 16 forms jquery submit fancybox

有没有办法让fancybox(http://fancy.klade.lv/)或任何其他灯箱提交FORM(带图像按钮)?

HTML看起来像这样:

<form action="/ACTION/FastFindObj" method="post">
  <input name="fastfind" class="fastfind" value="3463" type="text">
  <input name="weiter" type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

这些不会做:

    $("form").fancybox();
    $("input").fancybox();
    $("input[name='weiter']").fancybox();
Run Code Online (Sandbox Code Playgroud)

有人发现我的错误或有解决方法或替代脚本?提前致谢

Gar*_*ope 45

我相信所有其他答案都错过了问题的重点(除非我是一个误解).我认为作者想要的是这样,当提交表单时,其结果将显示在fancybox中.我没有发现任何其他答案提供了该功能.

为此,我使用jQuery Form Plugin(http://malsup.com/jquery/form/)轻松地将表单转换为ajax调用.然后我使用成功回调将响应加载到fancybox中,使用手动调用$ .fancybox().

$(document).ready(function() {
    $("#myForm").ajaxForm({
        success: function(responseText){
            $.fancybox({
                'content' : responseText
            });
        }
    }); 
});
Run Code Online (Sandbox Code Playgroud)

因此,不要将fancybox附加到某个人工<a>标记,而是将ajaxForm附加到表单本身.

  • 优秀!我希望这有助于下一个尝试做同样事情的人.很高兴看到FancyBox包含此功能,但此解决方案在此期间也能正常运行. (2认同)
  • 好吧,它确实有助于下一个加仑.谢谢你,这正是我所寻找的! (2认同)
  • 这正是我所要求的,谢谢!他们应该在他们的主页上发布这个用法示例. (2认同)

小智 9

更好的想法是使用即时html,即.

$("#buttontoclick").click(function() {
    $('<a href="path/to/whatever">Friendly description</a>').fancybox({
        overlayShow: true
    }).click();
});
Run Code Online (Sandbox Code Playgroud)


Yas*_*vit 8

试试这个

$(document).ready(function() {
  $("#link").fancybox();
  $("#btn").click(function(){
    $("#link").trigger('click');
  });
});

<input type="button" id="btn" value="Button" />
<div style="display:none;"> 
 <a href="#test" id="link">Click</a>
</div>

<div id="test" style="display:none;">fancy box content</div>
Run Code Online (Sandbox Code Playgroud)

点击按钮,你会触发隐藏的href点击.

希望这可以帮助


小智 6

Fancybox能够直接处理ajax请求,而无需额外的jQuery脚本.

$("#login_form").bind("submit", function() {

    $.ajax({
        type        : "POST",
        cache       : false,
        url         : "/login.php",
        data        : $(this).serializeArray(),
        success: function(data) {
            $.fancybox(data);
        }
    });

    return false;
});

<form action="/login.php" method="POST" id="login_form">
<input type="input" size="20" name="username" />
<input type="submit" value="Login" />
</form>
Run Code Online (Sandbox Code Playgroud)