Reputation: 6263
I've got some JQuery which works fine. It loads all the autocomplete values, and upon clicking them, they load the searchdata.php which performs all the searching. This works.
What I can't figure out is, if the user decides they don't want to select an autocomplete value and hit enter instead, how do I get it to perform the searchdata.php on the value that is in the search input upon hitting enter WITHOUT reloading the page? I've tried bind and live and can't get it to work.
<script type="text/javascript">
$(document).ready(function() {
var availableTags = <?php echo json_encode($findrow);?>;
$("#search_input").watermark("Begin Typing to Search");
$('#searchresultdata').append(sendSelected);
$("#search_input").autocomplete({
source: availableTags,
select: function(event, ui) {
sendSelected(ui.item.value);
}
});
function sendSelected(_val){
var search_input = _val;
if (search_input =='') search_input ='*';
var dataString = 'keyword='+search_input;
if (search_input.length > 2 || search_input=='*') {
$.ajax({
type: "GET",
url: "core/functions/searchdata.php",
data: dataString,
success: function(server_response) {
$('#searchresultdata').empty();
$('#searchresultdata').append(server_response);
$('span#category_title').html(search_input);
}
});
}
}
});
</script>
Upvotes: 4
Views: 10699
Reputation: 36592
$("#search_input").keypress(function(e) {
if(e.keyCode == 13)
{
e.preventDefault();
sendSelected(this.value);
$(this).autocomplete('close');
}
});
Upvotes: 7
Reputation: 2881
$("#search_input").on('keyup', function(event) {
if(event.which == 13) // event.which detect the code for keypress in jQuery
{
event.preventDefault();
sendSelected(this.value);
}
});
Upvotes: 3
Reputation: 4453
you can use event.preventDefault()
on the action and it wont submit the page, you just have to be sure to juggle it on and off when you need to
http://api.jquery.com/event.preventDefault/
Upvotes: 2