113

I have set up a bootstrap modal with a form inside it, I just noticed that when I press the Enter key, the modal gets dismissed. Is there a way not to dismiss it when pressing Enter?

I tried activating the modal with keyboard:false, but that only prevents dismissal with the ESC key.

Andres I Perez
  • 75,075
  • 21
  • 157
  • 138
Luke Morgan
  • 1,900
  • 2
  • 14
  • 18
  • I like this question. Why not just edit the plugin's source code? – Ryan May 01 '12 at 16:17
  • I'll take a look into that, if I find something useful I'll edit. In the meantime, I hope someone knows the answer. – Luke Morgan May 01 '12 at 16:25
  • I changed from click.dismiss.modal to keyup, it seems fine, I'll check again later to see if I screwed up something else – Luke Morgan May 01 '12 at 16:54
  • Yup, that screwed up the buttons (I added an onclick="$('#signinModal').modal('hide');" to avoid those problems, now everything is fine, it seems) – Luke Morgan May 01 '12 at 19:51

8 Answers8

127

I just had this problem too.
My problem was that i had a close button in my modal

<button class="close" data-dismiss="modal">&times;</button>

Pressing enter in the input field caused this button to be fired. I changed it to an anchor instead and it works as expected now (enter submits the form and does not close the modal).

<a class="close" data-dismiss="modal">&times;</a>

Without seeing your source, I can't confirm that your cause is the same though.

vish
  • 2,436
  • 1
  • 24
  • 20
84

Just add the type="button" attribute to the button element, some browsers interpret the type as submit by default.

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Attributes

This applies for all the buttons you have in the modal.

<button type="button" class="close" data-dismiss="modal">×</button>
ohcibi
  • 2,518
  • 3
  • 24
  • 47
jcalonso
  • 1,473
  • 13
  • 19
21

I had this problem even after removing ALL buttons from my Bootstrap Modal, so none of the solutions here helped me.

I found that a form with a single text field would cause the browser to do a form submit (and result in dismiss), if you hit Enter while keyboard focus is on the text field. This seems to be more of a browser/form issue than anything with Bootstrap.

My solution was to set the form's onsubmit attribute to onsubmit="return false"

This may be a problem if you are actually using the submit event, but I'm using JS frameworks that generate AJAX requests rather than doing a browser submit, so I prefer disabling submit entirely. (It also means I don't have to manually tweak every form element that might trigger a submit).

More info here: Bootstrap modal dialogs with a single text input field always dismiss on Enter key

Community
  • 1
  • 1
jpeskin
  • 2,801
  • 4
  • 28
  • 27
  • 2
    I already had `type="button"` on all my close / cancel buttons, but still had this problem with enter key closing my modal. I had just 1 input text field in my modal, and your solution fixed it. Thanks for your answer! – Darren Parker Apr 06 '16 at 19:20
  • 1
    This should be the accepted answer. Thanks – coterobarros Oct 16 '21 at 11:20
9

I had same problem, and i solved it with

<form onsubmit="return false;">

but there is one more solution, you can add dummy invisible input, so your form would look like this:

<form role="form" method="post" action="submitform.php">
    <input type="text" id="name" name="name" >
    <input type="text" style="display: none;">
</form>
Igor Lovrić
  • 176
  • 2
  • 2
8

You can put the login button before the cancel button and this would solve the issue you are having as well.

<div class="modal-footer">
    <button type="submit" class="btn primary">Login</button>
    <button type="submit" class="btn" data-dismiss="modal">Cancel</button>
</div>
Ahmad Ahmadi
  • 337
  • 1
  • 4
  • 19
Ryan
  • 89
  • 1
3

I had a similar experience just now and the way I solved it was instead of using a tag, I changed the tag to an tag with type="button". This seemed to solve the problem of pressing the "enter" key and dismissing the bootstrap modal.

wmock
  • 5,382
  • 4
  • 40
  • 62
2

I had this problem too and I solved it this way. I added onsubmit to form. I also wanted to be able to use enter key as a saving key so I added save_stuff() javascript to onsubmit. return false; is used to prevent the form submit.

<form onsubmit="save_stuff(); return false;">
 ...
</form>

<script>
    function save_stuff(){
      //Saving stuff
    }
</script>
Firze
  • 3,939
  • 6
  • 48
  • 61
0

For me it was simpler: I had submit and cancel buttons that were outside the scope of the form, and hitting enter on the modal dismissed the model rather than submitted it.

PEELY
  • 1,183
  • 1
  • 11
  • 21