Twitter Bootstrap Modal Form Submit

后端 未结 5 646
鱼传尺愫
鱼传尺愫 2020-12-05 03:29

I\'ve recently been fiddling around with twitter bootstrap, using java/jboss, and i\'ve been attempting to submit a form from a Modal interface, the form contains just a hid

相关标签:
5条回答
  • 2020-12-05 03:31

    Updated 2018

    Do you want to close the modal after submit? Whether the form in inside the modal or external to it you should be able to use jQuery ajax to submit the form.

    Here is an example with the form inside the modal:

    <a href="#myModal" role="button" class="btn" data-toggle="modal">Launch demo modal</a>
    
    <div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                <h3 id="myModalLabel">Modal header</h3>
        </div>
        <div class="modal-body">
            <form id="myForm" method="post">
              <input type="hidden" value="hello" id="myField">
                <button id="myFormSubmit" type="submit">Submit</button>
            </form>
        </div>
        <div class="modal-footer">
            <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
            <button class="btn btn-primary">Save changes</button>
        </div>
    </div>
    

    And the jQuery ajax to get the form fields and submit it..

    $('#myFormSubmit').click(function(e){
          e.preventDefault();
          alert($('#myField').val());
          /*
          $.post('http://path/to/post', 
             $('#myForm').serialize(), 
             function(data, status, xhr){
               // do something here with response;
             });
          */
    });
    

    Bootstrap 3 example


    Bootstrap 4 example

    0 讨论(0)
  • 2020-12-05 03:32

    You can also cheat in some way by hidding a submit button on your form and triggering it when you click on your modal button.

    0 讨论(0)
  • 2020-12-05 03:43

    Simple

    <div class="modal-footer">
    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
    <button class="btn btn-primary" onclick="event.preventDefault();document.getElementById('your-form').submit();">Save changes</button>
    

    0 讨论(0)
  • 2020-12-05 03:48

    This answer is late, but I'm posting anyway hoping it will help someone. Like you, I also had difficulty submitting a form that was outside my bootstrap modal, and I didn't want to use ajax because I wanted a whole new page to load, not just part of the current page. After much trial and error here's the jQuery that worked for me:

    $(function () {
        $('body').on('click', '.odom-submit', function (e) {
            $(this.form).submit();
            $('#myModal').modal('hide');
        });
    });
    

    To make this work I did this in the modal footer

    <div class="modal-footer">
        <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
        <button class="btn btn-primary odom-submit">Save changes</button>
    </div>
    

    Notice the addition to class of odom-submit. You can, of course, name it whatever suits your particular situation.

    0 讨论(0)
  • 2020-12-05 03:49

    Old, but maybe useful for readers to have a full example of how use modal.

    I do like following ( working example jsfiddle ) :

    $('button.btn.btn-success').click(function(event)
    {
    
    event.preventDefault();
    
    $.post('getpostcodescript.php', $('form').serialize(), function(data, status, xhr)
        {
            // do something here with response;
            console.info(data);
            console.info(status);
            console.info(xhr);
        })
        .done(function() {
            // do something here if done ;
            alert( "saved" );
        })
        .fail(function() {
            // do something here if there is an error ;
            alert( "error" );
        })
        .always(function() {
            // maybe the good state to close the modal
            alert( "finished" );
            // Set a timeout to hide the element again
            setTimeout(function(){
              $("#myModal").hide();
            }, 3000);
        });
    });
    

    To deal easier with modals, I recommend using eModal, which permit to go faster on base use of bootstrap 3 modals.

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