admin管理员组

文章数量:1290095

I am trying to make an function for users to send an e-mail, the e-mail should contain only 1 div from the page(note: that div has elements previously added with the jquery drag and clone function). I dont have an idea how to copy the entire div with its child elements and add them into a hidden field so that I could later send thim with POST method and then send that with e-mail function. Any ideas and remendations?

Thank you for your time and help

I am trying to make an function for users to send an e-mail, the e-mail should contain only 1 div from the page(note: that div has elements previously added with the jquery drag and clone function). I dont have an idea how to copy the entire div with its child elements and add them into a hidden field so that I could later send thim with POST method and then send that with e-mail function. Any ideas and remendations?

Thank you for your time and help

Share Improve this question asked Jan 20, 2012 at 12:28 Igor IvanovskiIgor Ivanovski 4152 gold badges6 silver badges13 bronze badges 4
  • 1 $('#divid').text(); or $('#divid').html(); will get you the source ... $('#hiddenid').val(valuefromabove); would set it – Manse Commented Jan 20, 2012 at 12:32
  • Since you say you are using jQ this is very easy - just do var theHTML = '<div>'+$('#idOfDiv').html().'</div>'; – DaveRandom Commented Jan 20, 2012 at 12:32
  • Is it necessary to copy the entire div, or do you really want the values of elements within the div? – Herbert Commented Jan 20, 2012 at 12:34
  • 1 Be warned that most email clients (including Outlook 2007, Gmail, Hotmail, Yahoo Mail, etc) render a very limited set of HTML and CSS elements. i.e. Although you can send it, the HTML may end up looking terrible as an email. – Dan Blows Commented Jan 20, 2012 at 12:47
Add a ment  | 

3 Answers 3

Reset to default 5

Say for example your html is something like

<div id="email-data">
    <div id="content">
        some Data Here
    </div>
</div>
<a id="sendEmail" >Send Email</a>

you can use jquery to select the div and send data through ajax to a php file and then send email from that file

$(document).ready(function(){

  $('#sendEmail').click(function(){
     $.ajax({
         type: 'POST',
         url: 'sendEmail.php',
         data: { content: $('#email-data').html()}
     });
  });

});

And in the back end you could probably check for $_POST['content'] (say im using php) and modify your logic accordingly . Here's the Jsfiddle code

Suppose you have a form with id mail, and hidden input with id content and name content, and submit button.

Also, you have div, where you manipulate all your entire content, with id mail-body.

Then, this code will preprocess data before submitting, and while preprocessing puts all content from working $('div#mail-body') into hidden field content.

$(document).ready(function()
{
    // Live means that if the html were loaded via AJAX, this trigger will also work.
    $('form#mail').live('submit', function(e) {
        $(this).find('input[type="hidden"]#mail-body').val($('div#content').html());
    });
});

Then you've got on a server side everything that were in $('div#content') in post/get var named $_POST['content'] or $_GET['content'].

If i think i've understood you correctly

$(document).ready(function(){

var html = $('#divID').html();
$('#divID').hide();

//when you want to send it to php
  $.ajax(function{
    type="POST",
    url:"email.php",
    data:"data="+html,
    success:function(response){
       $('#divID').show().html("email sent");
    }
  });

});

get the data on the other side with $_POST['data']

本文标签: javascriptGET entire div with its elements and send it with php mail functionStack Overflow