Reputation: 403
Say I have an HTML form like this to collect an email from a website visitor:
<form name="input" action="handle_email.php" method="post">
Email: <input type="text" name="email" />
<input type="submit" value="Newsletter" />
</form>
Now when the submit button is pressed I can get the value of the email field in handle_email.php by using $_POST["email"]. But say I'd like to use the value of the email text input elsewhere. Is it possible to get the email value "outside" of the form processing?
UPDATE: Thanks to everyone for their quick replies. What I'm trying to do is get the email box to do double-duty. For example, I've renamed the submit button to "Newsletter" in the above code. When that button is pressed the handle_email.php script will just sign up the user for a newsletter. However, I also have a "Register" link on the same page that redirects the visitor to a registration form where they can enter lots of other info if they like. Now, if the user happened to have entered data in the email text box I'd like to send it along to the registration page so that field can be pre-populated. For example:
<a href="http://mywebsite.com/register?user_email="[how can I put the email here?]"/>Register</a>
My apologies for not being clear enough in my original post.
Upvotes: 9
Views: 148158
Reputation: 207901
See my jsFiddle here: http://jsfiddle.net/fuDBL/
Whenever you change the email field, the link is updated automatically. This requires a small amount of jQuery. So now your form will work as needed, but your link will be updated dynamically so that when someone clicks on it, it contains what they entered in the email field. You should validate the input on the receiving page.
$('input[name="email"]').change(function(){
$('#regLink').attr('href')+$('input[name="email"]').val();
});
Upvotes: 10
Reputation: 1884
Yes, you can use jQuery to make this done, the idea is
Use a hidden value in your form, and copy the value from external text box to this hidden value just before submitting the form.
<form name="input" action="handle_email.php" method="post">
<input type="hidden" name="email" id="email" />
<input type="submit" value="Submit" />
</form>
<script>
$("form").submit(function() {
var emailFromOtherTextBox = $("#email_textbox").val();
$("#email").val(emailFromOtherTextBox );
return true;
});
</script>
also see http://api.jquery.com/submit/
Upvotes: 0
Reputation: 1533
If your page is refreshed on submitting - yes, but only through the querystring: http://www.bloggingdeveloper.com/post/JavaScript-QueryString-ParseGet-QueryString-with-Client-Side-JavaScript.aspx (You must use method "GET" then). Else, you can return its value from the php script.
Upvotes: 1
Reputation: 1948
Depends on where you want to use the email. If it's on the client side, without sending it to a PHP script, JQuery (or javascript) can do the trick.
I've created a fiddle to explain the same - http://jsfiddle.net/qHcpR/
It has an alert which goes off on load and when you click the textbox itself.
Upvotes: 1
Reputation: 1141
If you want to use the value of the email input somewhere else on the same page, for example to do some sort of validation, you could use JavaScript. First I would assign an "id" attribute to your email textbox:
<input type="text" name="email" id="email"/>
and then I would retrieve the value with JavaScript:
var email = document.getElementById('email').value;
From there, you can do additional processing on the value of 'email'.
Upvotes: 23