Javascript 防止在按Enter键时提交表单

Javascript 防止在按Enter键时提交表单,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,关于stackoverflow,有很多答案。但不幸的是,没有一个是为我工作的。我会一个接一个地告诉你我试过什么 @组件(…) 类MyComponent{ skillsHandleEnter(事件,skillString){ event.preventDefault(); //…你的逻辑 } } 但这些方法都不起作用。我使用的是ngx标签输入,它允许我应用一些由enter键分隔的标签。这就产生了一个问题。当我按下回车键时,我的表单被提交,只有一个我可以输入的标签。相信我,我已经尽了一切努力来防

关于stackoverflow,有很多答案。但不幸的是,没有一个是为我工作的。我会一个接一个地告诉你我试过什么

  • @组件(…) 类MyComponent{ skillsHandleEnter(事件,skillString){ event.preventDefault(); //…你的逻辑 } }

  • 但这些方法都不起作用。我使用的是
    ngx标签输入
    ,它允许我应用一些由
    enter
    键分隔的标签。这就产生了一个问题。当我按下回车键时,我的表单被提交,只有一个我可以输入的标签。相信我,我已经尽了一切努力来防止这种情况发生,而且我也不想让事情变得过于复杂。请忽略命名约定。我以后再修

    在实现任何解决方案之前,这里是我的blog.component.html

    <form [formGroup]="editorForm" (ngSubmit)="onSubmit()">
      <div class="form-group">
        <label for="exampleInputEmail1">
          <h3>Title</h3>
        </label>
        <input type="text" class="form-control" id="inputTitle" aria-describedby="emailHelp" placeholder="Enter a question that explains your problem exactly">
        <br>
        <label for="editor">
          <h3>Editor</h3>
        </label>
        <quill-editor [styles]="editorStyle" [modules]="config" formControlName="editor"></quill-editor>
      </div>
      <ngx-tags-input class="form-control input-lg" name="tags"></ngx-tags-input>
      <button class="btn btn-primary mt-3 mb-3">Submit</button>
    </form>
    
    
    标题
    
    编辑 提交

    请更正。

    使用
    ngSubmit
    的唯一原因是在“回车”键上提交表单。 因此,您可以删除
    ngSubmit
    事件侦听,并将其替换为按钮的
    单击事件。我还通过添加
    type=“button”
    从按钮中删除了提交

    
    标题
    
    编辑 提交
    使用
    ngSubmit
    的唯一原因是在“回车”键上提交表单。 因此,您可以删除
    ngSubmit
    事件侦听,并将其替换为按钮的
    单击事件。我还通过添加
    type=“button”
    从按钮中删除了提交

    
    标题
    
    编辑 提交
    html元素有三个有效类型

  • 提交:按钮将表单数据提交到服务器。这是默认值,html元素有三个有效类型


  • 提交:按钮将表单数据提交到服务器。这是默认设置,我遵循以下两个简单步骤:

    1) 我在我的
    表单
    标记中添加了一个属性

    (keydown.enter)=“$event.preventDefault()”

    2) 在提交按钮上添加了
    (单击)
    侦听器

    因此,整个HTML代码如下所示:

    <div class="container">
      <div class="row pt-5">
        <div class="col-md-12 col-lg-12 col-sm-12 bg-light">
          <form [formGroup]="editorForm" (keydown.enter)="$event.preventDefault()">
            <div class="form-group">
                        ...
            </div>
            <button class="btn btn-primary (click)="onSubmit()">Submit</button>
          </form>
        </div>
      </div>
    </div>
    
    
    ...
    
    我遵循以下两个简单步骤:

    1) 我在我的
    表单
    标记中添加了一个属性

    (keydown.enter)=“$event.preventDefault()”

    2) 在提交按钮上添加了
    (单击)
    侦听器

    因此,整个HTML代码如下所示:

    <div class="container">
      <div class="row pt-5">
        <div class="col-md-12 col-lg-12 col-sm-12 bg-light">
          <form [formGroup]="editorForm" (keydown.enter)="$event.preventDefault()">
            <div class="form-group">
                        ...
            </div>
            <button class="btn btn-primary (click)="onSubmit()">Submit</button>
          </form>
        </div>
      </div>
    </div>
    
    
    ...
    
    <代码>(OnSudio)=“OnSt递交(F)”<代码> >函数>提交(f){F.FortError Debug();} /Corp>或类似。Hy@ TaZeEL如果回答中的任何一个已经解决了您的问题,请考虑接受它。这向更广泛的社区表明,您已经找到了解决方案并给回答者和您自己带来了一些声誉。没有义务这样做@马尔巴马维。我明白这一点。但是没有一个答案解决了我的问题。我提出了我自己的解决方案,我现在发布。希望你们能接受并支持投票。谢谢。<代码>(OnSudio)=“OnSt递交(F)”<代码>函数>提交(f){F.FortEnguleDebug();} /代码>或类似。Hy@ TaZeEL如果回答中的任何一个已经解决了您的问题,请考虑接受它。这向更广泛的社区表明,您已经找到了解决方案并给回答者和您自己带来了一些声誉。没有义务这样做@马尔巴马维。我明白这一点。但是没有一个答案解决了我的问题。我提出了我自己的解决方案,我现在发布。希望你们能接受并支持投票。谢谢