Reputation: 15925
Using jQuery, how do I get the value from a textbox and then load a new page based on the value?
For example, lets say the textbox contains "hello" on page1.php, how do I change the default behavior of an anchor tag to now load the following
page2.php?txt=hello
I have the following so far:
<script type="text/javascript">
$(document).ready(function(){
$("a.mylink").click(function(event){
alert("link clicked");
event.preventDefault();
});
});
</script>
Upvotes: 15
Views: 31023
Reputation: 32107
Html
<input type="text" id="demoQuery" />
<a id='demoLink' href='javascript:'>Iam a link</a>
Javascript
jQuery('#demoLink').bind('click',function(e){
e.preventDefault();
document.location.href="someUrl.php?text="+ jQuery('#demoQuery').val();
});
Upvotes: 28
Reputation: 68456
You can use the blur event of the text box, so after the user has finished typing the anchor can be updated using the following jQuery:
$("#textBoxId").blur(function() {
var text = $(this).val();
var end = text.length == 0 ? "" : "?txt=" + text;
$("a.mylink").attr("href", "Page2.php" + end);
});
And just change the href of the anchor. Then you don't need to handle the anchor click
yourself. The anchor will just redirect to "Page.php?txt=Hello". And this will ensure that the link is always up to date and will work if the user right clicks and selects open in new window.
Or you could do it the other way around and handle the click of the anchor:
$("a.mylink").click(function(e) {
var text = $("#textBoxId").val();
document.location.href = $(this).attr("href") + "?txt=" + text;
e.preventDefault();
});
But if the user right clicks, this event will not fire.
Upvotes: 3
Reputation: 25421
Set a click event on the anchor tag to add the query string when it is clicked.
$('a').click(function() {
var querystring = $('input').serialize();
this.href += querystring;
});
This uses jQuery's serialize method. Where the selector is every input or field you want to pass the field to the next page. Good luck!
No need to use event.preventDefault.
Upvotes: 3