防止触发jQuery。通过按enter键单击事件 $(文档).ready(函数(){ $(“.plus”)。单击(函数(e){ e、 预防默认值(); //添加输入框 $(“.list”).append(“…在此处选择选项…”); }); //用户单击删除文本 $(“.list”)。在(“.click”、“.remove”)上,函数(e){ e、 预防默认值(); $(this.parent('div').remove(); }); });

防止触发jQuery。通过按enter键单击事件 $(文档).ready(函数(){ $(“.plus”)。单击(函数(e){ e、 预防默认值(); //添加输入框 $(“.list”).append(“…在此处选择选项…”); }); //用户单击删除文本 $(“.list”)。在(“.click”、“.remove”)上,函数(e){ e、 预防默认值(); $(this.parent('div').remove(); }); });,jquery,Jquery,HTML: + 此代码用于在动态表单中添加(单击.plus按钮)/删除(单击.remove链接)行选择框,并且工作正常。表单还包含一个搜索输入字段(name=“txt”),它不是.list类的一部分。如果我在这个输入字段中键入stuff并按Enter键(应该提交表单),显然这是作为.plus按钮的单击事件处理的,并添加一个新行,而不是提交表单。如果我通过鼠标点击提交表单,一切正常。有什么想法吗 您的表单将.plus按钮视为提交按钮,因为它没有类型(表单的默认操作)。但是,您调用了event.

HTML:


+

此代码用于在动态表单中添加(单击.plus按钮)/删除(单击.remove链接)行选择框,并且工作正常。表单还包含一个搜索输入字段(name=“txt”),它不是.list类的一部分。如果我在这个输入字段中键入stuff并按Enter键(应该提交表单),显然这是作为.plus按钮的单击事件处理的,并添加一个新行,而不是提交表单。如果我通过鼠标点击提交表单,一切正常。有什么想法吗

您的表单将
.plus
按钮视为提交按钮,因为它没有类型(表单的默认操作)。但是,您调用了
event.preventDefault()
,因此表单不会提交,而是添加了您的行

有几种方法可以防止这种情况;一种方法是简单地将
type=“button”
添加到第一个按钮,以将其与
submit
类型区分开来

<form method="post" action="search.php">
  <div>
    <button class="plus">+</button>
  </div>

  <div class="list"></div>

  <div>
    <input type="text" name="txt">
  </div>

  <div>
    <input type="submit" name="submit" value="Submit">
  </div>
</form>
+
<form method="post" action="search.php">
  <div>
    <button class="plus">+</button>
  </div>

  <div class="list"></div>

  <div>
    <input type="text" name="txt">
  </div>

  <div>
    <input type="submit" name="submit" value="Submit">
  </div>
</form>
<button class="plus" type="button">+</button>