I have a little email system on my wordpress site wherein people submit php generated content to me via email. Basically the content is generated within a div and then via a little javascript the div-content is mailed to me. I am skipping the part how it is generated in order to keep the focus on the main issue. Here is an illustration.
<div id="article" style="display:none"> // some content are generated here via php </div> <div id="visitor"> <input type="text" id="name" name="name" maxlength="60"/> </div> <input type="submit" value="submit" id="button" onClick="handleFormSubmit()"> <script language="javascript" type="text/javascript"> function handleFormSubmit(){ var button = document.getElementById('button'); button.style.display = 'none'; } </script> <script type="text/javascript"> jQuery(document).ready(function($) { $('#button').click(function(){ $.ajax({ type: 'POST', url: 'http://xxxxxxxxxxxxxxx/processForm.php', data:{'message':$('#article').html(),'client': $('#visitor').html() }, success:function(data) { alert('You data has been successfully e-mailed'); } }); }); }); </script>
Please note the first div-id”aricle” block, it contains the main content, which I have been getting fine Now notice the second div-id “visitor” block right below the first block. I have not been able to get the input of that one. I would prefer to get it as a regular form text input.
I think the reason I am not able to get the input is because I am not having any <form></form>
tag. But then the main part is working, so I just need it work along-with it somehow. I leave it upto you guys to suggest me solution or a best way to get both the data. I am familiar with a little php but javascript, not at all.
Here is the content of the processForm.php. All these have been put together by learning what I could from several articles on the web. Many thanks in advance.
$to = "emailto@awesomepeople.com"; $subject = "NEW ARTICLE"; $message .= $_POST['message']; $client = $_POST ['client']; $headers = "From: awesomesite <someone@website.com>" . "rn"; $headers .= "MIME-Version: 1.0rn"; $headers .= "Content-Type: text/html; charset=ISO-8859-1rn"; mail($to, $subject, $message, $headers);
Advertisement
Answer
I am just sharing the code below to get the value of required textbox in the provided div
id = “visitor”, I hope it helps to get your desired results:
<script type="text/javascript"> jQuery(document).ready(function($) {<br/> $('#button').click(function(){<br/> $.ajax({<br/> type: 'POST',<br/> url: 'http://xxxxxxxxxxxxxxx/processForm.php',<br/> data:<br/>{<br/>'message':$('#article').html(),<br/>'client': $('#name').val() <br/>},<br/> success:function(data) <br/>{<br/> alert('You data has been successfully e-mailed'); <br/> } <br/> }); <br/> });<br/> });<br/> </script>
I have replaced $('#visitor').html()
to $('#name').val()
in your script, as the below is the explanation:
$('#visitor').html() =
gives the inner HTML content of thatdiv
of id = “visitor” which is a text box and I am sure that you are interested in the value entered by any user into that text box.$('#name').val() =
gives you the value of text box whose id = “name”
I hope the above will help you to get desired results with explanation.