Reputation: 5661
I have a input text and I apply it typeahead plugin for suggesting items, but when I press enter key on input text it submit form.
How can I prevent form submit using twitter bootstrap typeahead plugin?
Upvotes: 15
Views: 22670
Reputation: 5002
Use this
$('.bootstrap-tagsinput input').keydown(function( event ) {
if ( event.which == 13 ) {
$(this).blur();
$(this).focus();
return false;
}
})
Upvotes: 0
Reputation: 21
I have same problem in my project using CodeIgniter and bootstrap here i found the solution and it works.
Just add onsubmit="return false;"
in the form, like this:
<form id="frmcrud" method="post" onsubmit="return false;">
Upvotes: 2
Reputation: 11
The best way I've found to approach this is not to use a submit input. Use a button input instead and add some js to submit the form when it's clicked.
$('#my_submit_button').click(function(){
$(this).parents('form').submit();
});
Upvotes: 1
Reputation: 560
According to the documentation, you can set the option confirmKeys
to something else than return (13) :
$('input').tagsinput({
confirmKeys: [188, 32, 39],
});
However, a smarter way to go about this is to prevent sending the form on enter.
Upvotes: 2
Reputation: 2871
The first answer didn't worked for me, maybe because of updating the typeahead plugin, but I did passed the problem by using the 'alternative' input created by typehead:
$(".twitter-typeahead > input").focus(function(){
//disable btn when focusing the input
$("#my_submit_button").prop('disabled', true);
}).blur(function(){
//enable btn when bluring the input
$("#my_submit_button").prop('disabled', false);
});
Upvotes: 3
Reputation: 75379
You can target that specific input by adding an ID to it and simply removing the keydown event for enter like so:
JS
$(document).ready(function() {
$('form input').keydown(function(event){
if(event.keyCode == 13) {
event.preventDefault();
return false;
}
});
});
Upvotes: 24