输入按键时避免模态解除

Luk*_*gan 103 forms modal-dialog twitter-bootstrap

我已经设置了一个带有表单的bootstrap模式,我只是注意到当我按下Enter键时,模态被解除了.按Enter键有没有办法不解雇它?

我尝试用键盘激活模态:false,但这只能阻止使用ESC键解雇.

vis*_*ish 117

我也遇到了这个问题.
我的问题是我的模态中有一个关闭按钮

<button class="close" data-dismiss="modal">&times;</button>
Run Code Online (Sandbox Code Playgroud)

在输入字段中按Enter键会导致触发此按钮.我将它改为锚点,它现在按预期工作(输入提交表单并且不关闭模态).

<a class="close" data-dismiss="modal">&times;</a>
Run Code Online (Sandbox Code Playgroud)

如果没有看到您的来源,我无法确认您的原因是否相同.

  • 可以在取消按钮上使用type ="button" (11认同)
  • 这不仅仅是一个按钮问题.我已从模态中删除了所有按钮(包括右上角的"x"),但如果我有一个表单文本字段,按Enter键将关闭对话框.奇怪的是,当存在单个文本字段时,这只是一个问题.一旦我有两个,无论哪个领域有焦点,Enter都不会忽略模型. (8认同)

jca*_*nso 74

只需将button ="button"属性添加到button元素,某些浏览器默认将该类型解释为submit.

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

这适用于模态中的所有按钮.

<button type="button" class="close" data-dismiss="modal">×</button>
Run Code Online (Sandbox Code Playgroud)


jpe*_*kin 19

即使从我的Bootstrap Modal中删除所有按钮后我也遇到了这个问题,所以这里没有一个解决方案对我有帮助.

我发现只有键盘焦点位于文本字段时,如果您按Enter键,则具有单个文本字段的表单将导致浏览器执行表单提交(并导致解除).这似乎比使用Bootstrap的任何东西更像是一个浏览器/表单问题.

我的解决方案是将表单的onsubmit属性设置为onsubmit ="return false"

如果您实际使用的是提交事件,这可能是一个问题,但我使用的是生成AJAX请求的JS框架,而不是进行浏览器提交,所以我更喜欢完全禁用提交.(这也意味着我不必手动调整可能触发提交的每个表单元素).

更多信息:带有单个文本输入字段的Bootstrap模式对话框始终在Enter键上关闭

  • 我已经在所有关闭/取消按钮上都有`type ="按钮"`,但仍然有输入键关闭我的模态的问题.我的模态中只有一个输入文本字段,您的解决方案已修复它.感谢您的回答! (2认同)

小智 7

您可以在取消按钮之前放置登录按钮,这也可以解决您遇到的问题.

<div class="modal-footer">
    <button type="submit" class="btn primary">Login</button>
    <button type="submit" class="btn" data-dismiss="modal">Cancel</button>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 取消不应该是提交类型 (4认同)

小智 7

我有同样的问题,我解决了

<form onsubmit="return false;">
Run Code Online (Sandbox Code Playgroud)

但是还有一种解决方案,您可以添加虚拟的不可见输入,因此您的表单将如下所示:

<form role="form" method="post" action="submitform.php">
    <input type="text" id="name" name="name" >
    <input type="text" style="display: none;">
</form>
Run Code Online (Sandbox Code Playgroud)