Question

How to submit array data to bootstrap/zurb foundation modal, This is my Form to submit data:

<form method="post" action="">
        <p>
            <label>Name 1: </label>
            <input type="text" name="name[]" size="30" />
        </p>
            <p>
            <label>Name 2: </label>
            <input type="text" name="name[]" size="30" />
        </p>

            <p>
            <label>Name 3: </label>
            <input type="text" name="name[]" size="30" />
        </p>
        <p>
            <label>Address: </label>
            <textarea name="address"></textarea>
        </p>        
        <p>
            <input type="submit" value="Submit" />
        </p>
</form>

My modal to display submit result:

<div id="modal">
    Name :
    Address : 
</div>
Was it helpful?

Solution 2

You can use this:

$('form').on('submit', function (e) {
    e.preventDefault();
    var o = {};
        o['Name'] = $('[name="name"]').val();
        o['Address'] = $('[name="address"]').val();

    $.each(o, function (k, d) {
        var p = '<p>' + k + ' : ' + d + '</p>';
        $('#modal').append(p);
    });
});

A better way to do it.


As you updated your markup code then you have to update your js code little bit this way:

$('form').on('submit', function (e) {
    e.preventDefault();
    var o = {};
        o['Name 1'] = $('label:contains(1)').next('[name="name[]"]').val();
        o['Name 2'] = $('label:contains(2)').next('[name="name[]"]').val();
        o['Name 3'] = $('label:contains(3)').next('[name="name[]"]').val();
        o['Address'] = $('[name="address"]').val();

    $.each(o, function (k, d) {
        var p = '<p>' + k + ' : ' + d + '</p>';
        $('#modal').append(p);
    });
});

Updated demo @ fiddle here.

OTHER TIPS

Demo

You can use this;

$("form").submit(function(event) {
    event.preventDefault();
    var name = $("input[name='name']").val();
    var address = $("textarea[name='address']").val();
    var html = '<table><tr><td>Name:</td><td>' + name + '</td></tr><tr><td>Address: </td><td>' + address + '</td></tr></table';
    $(".modal-body").html(html);
    $("#myModal").modal("show");
})

Not sure if it applies to your need. To do this, I pass the value from form elements to the modal.

HTML

<form method="post" action="">
   <p>
      <label>Name: </label>
      <input type="text" name="name" size="30" />
   </p>
   <p>
      <label>Address: </label>
      <textarea name="address"></textarea>
   </p>        
   <p>
      <input type="submit" value="Submit" />
   </p>
</form>
<div class="modal fade">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title">Information</h4>
      </div>
      <div class="modal-body">
        <p class="name"></p>
        <p class="address"></p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div><!-- /.modal-content -->
  </div><!-- /.modal-dialog -->
</div><!-- /.modal -->

JavaScript:

$('form').submit( function(e) {
    var name = $('form input').val();
    var address = $('form textarea').val();
    $('p.name').text( "Name : " + name );
    $('p.address').text( "Address : " + address );
    $('.modal').modal();
    e.preventDefault();
});

See my fiddle.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top