Javascript 避免";提交;当用户仅用一个输入点击表单中的enter时

Javascript 避免";提交;当用户仅用一个输入点击表单中的enter时,javascript,html,Javascript,Html,我正在使用(好的,刚刚开始学习)引导、javascript和jQuery。我在其他编程语言方面有相当丰富的经验,我喜欢理解发生了什么 因此,我有一个只包含一个输入框的对话框,我不希望在用户点击enter时触发POST操作。据我所说,我正在使用一种肮脏的伎俩,我想知道如何更巧妙地做到这一点 <div class="modal-body"> <form enctype="multipart/form-data" class="well"> <input id

我正在使用(好的,刚刚开始学习)引导、javascript和jQuery。我在其他编程语言方面有相当丰富的经验,我喜欢理解发生了什么

因此,我有一个只包含一个输入框的对话框,我不希望在用户点击enter时触发POST操作。据我所说,我正在使用一种肮脏的伎俩,我想知道如何更巧妙地做到这一点

<div class="modal-body">
  <form enctype="multipart/form-data" class="well">
    <input id="empty" name="empty" type="hidden"/></form>
  <table width="100%">
    <tr><td width="30%">accession#.plant#</td>
        <td><input id="addendum" name="keyword" type="text"/></td></tr>
  </table>
</div>

加入#工厂#
未使用的“空”表单,这是我在Firefox27.0.1上使用的肮脏伎俩


我已经尝试过完全禁用enter键,正如对类似问题的回答所建议的那样,但根据我的说法,它有一个不理想的副作用:在输入元素中输入数据时,浏览器会给出提示。禁用enter键会使在它们之间进行选择变得困难。

如果没有看到JavaScript,很难判断,但您应该能够在JavaScript中的事件对象上调用
preventDefault
。这可以防止表单提交,但不应干扰浏览器中的提前输入行为。

为表单提供一个id,然后将id放入按键功能中。。。它应该会起作用。
Give the form an id and then put the id in the keypress function... It should work.
<script type="text/javascript">
    $(document).ready( function() {
        $('#[formid]').keypress(function (e) {
            if (e.which == 13) {
                e.preventdefault();
                return false;
            }
        });
    });
</script>
$(文档).ready(函数(){ $(“#[formid]”)。按键(功能(e){ 如果(e.which==13){ e、 预防默认值(); 返回false; } }); });
您可以使用它,如果没有输入任何字段,它将阻止表单提交

$( ".well" ).on( "submit", function() { 
  var has_empty = false;
  $(this).find( 'input' ).each(function () {
    if ( ! $(this).val() ) { has_empty = true; return false; }
  });
if ( has_empty ) { return false; }
});
编辑:将其提交给输入侦听器:

$(".well").bind("keyup keypress", function(e) {
  var code = e.keyCode || e.which; 
  if (code  == 13) {               
    e.preventDefault();
    var has_empty = false;
    $(this).find( 'input' ).each(function () {
      if ( ! $(this).val() ) { has_empty = true; return false; }
    });
    if ( has_empty ) { return false; }
  }
});

可能重复:我同意“相似”,而不是“重复”。尝试了这个,不起作用。表单在按enter键时发布。但这是一个巨大的代码量!我的肮脏伎俩看起来更好,不是吗?如果它有效,为什么不:)但我不确定你的解决方案是否适用于所有浏览器。如果你想要足够强壮的东西,而且在任何地方都能用,我建议你使用我的解决方案。在这两者之间,它确实很长,但这是执行它的客户机,而且处理时间低得离谱,这应该不是问题;)