Open Fancybox (or equiv) from Form input type=“submit”

后端 未结 9 1369
无人及你
无人及你 2020-12-01 07:10

is there a way to get a fancybox (http://fancy.klade.lv/) or any other lightbox from submitting a FORM (with an image button)?

HTML looks like this:

         


        
相关标签:
9条回答
  • 2020-12-01 07:43

    i have just been struggling with this and have found a way to display the results in the iframe of fancy box, i am not good with ajax yet so needed a php solution using jquery any ways here goes, my first answer!!:

    a little tweaking will need to be done in your jquery.fancybox js file, i was using jquery.fancybox.1.3.4.pack.js. open this up with any editor etc., and search for: name="fancybox-frame : thats it, there should only be one instance of this found and will look like:

     name="fancybox-frame'+(new Date).getTime()+'"
    

    Now you want to rename the whole:

    fancybox-frame'+(new Date).getTime()+'` 
    

    to anything your want, i just called it: "fbframe" and save the file. Now add the jquery settings, and form as follows and it should work fine:

    //activate jquery on page load and set onComplete the most important part of this working
    
    $(document).ready(function(){
    
            $("#a").fancybox({
                    'width'             : '75%',
                    'height'            : '100%',
                    'autoScale'         : false,
                    'type'              : 'iframe',
                    'onComplete':function (){$('#formid').submit();},
                }); 
             });
    
    //function called onclick of form button.      
    function activatefancybox(Who){
        $("#setID").val(Who); // i set the value of a hidden input on the form
        $("#a").trigger('click');//trigger the hidden fancybox link
    
        }
    
    // hidden link 
     <a id="a" href='#'></a> 
    
     // form to submit to iframe to display results. 
     // it is important to set the target of the form to the name of 
     // the iframe you renamed in the fancybox js file.
     <form name='iduser' id='iduser' action='page.php' target='fbframe' method='post'>
     <input />
     <input />
     <input id='setID' type='hidden' name='userid' value='' />
     <input type="button" onClick='testfb(123)' />
     </form>
    

    The proccess is:

    click submit -> call function -> function click FB link -> onComplete

    onComplete Submits form to the iframe after FB has loaded it! done.

    Please note I have ripped this out of my current project and have just edited certain required parts, I am still an amateur coder and would reccomend the ajax if you can. and also am only using FB1! FB2 is now available.

    0 讨论(0)
  • 2020-12-01 07:44

    TRY THIS

    $(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>
    

    on click of the button you trigger a click on the href which is hidden.

    hope this helps

    0 讨论(0)
  • 2020-12-01 07:44

    I just had to do this. Here's how I went about it.

    $('#elementid').fancybox({
       onStart : function() {
          $.post($(this).attr('href'), $('#formid').serialize());
       }
    });
    

    That way you can submit the form and call the fancybox all in one shot. It does submit the form ajax style. The "submit" button needs to be in an <a> tag.

    Hope that helps.

    0 讨论(0)
提交回复
热议问题