当前位置: 首页 > 知识库问答 >
问题:

单击表单中的按钮会导致页面刷新

蒯卓君
2023-03-14

我有一个Angular的表单,里面有两个按钮标签。一个按钮提交ng-单击上的表单。另一个按钮是纯导航使用ng-单击。然而,当点击第二个按钮时,AngularJS会导致页面刷新,从而触发404。我在函数中删除了一个断点,它正在触发我的函数。如果我执行以下任何操作,它将停止:

  1. 如果我删除ng单击,则该按钮不会导致页面刷新
  2. 如果我注释掉函数中的代码,它不会导致页面刷新
  3. 如果我将按钮标记更改为锚定标记(

后者似乎是最简单的解决方法,但为什么AngularJS甚至在我的函数之后运行任何导致页面重新加载的代码?看起来像个虫子。

表格如下:

<form class="form-horizontal" name="myProfile" ng-switch-when="profile">
  <fieldset>
    <div class="control-group">
      <label class="control-label" for="passwordButton">Password</label>
      <div class="controls">
        <button id="passwordButton" class="secondaryButton" ng-click="showChangePassword()">Change</button>
      </div>
    </div>

    <div class="buttonBar">
      <button id="saveProfileButton" class="primaryButton" ng-click="saveUser()">Save</button>
    </div>
  </fieldset>
</form>

以下是控制器方法:

$scope.showChangePassword = function() {
  $scope.selectedLink = "changePassword";
};

共有3个答案

马弘和
2023-03-14

您应该在您的中声明属性ng-提交={表达式}

从NGS提交文档http://docs.angularjs.org/api/ng.directive:ngSubmit

启用将角度表达式绑定到onsubmit事件。

此外,它还阻止了默认操作(对于表单来说,这意味着向服务器发送请求并重新加载当前页面)。

逑禄
2023-03-14

您可以尝试阻止默认处理程序:

html:

<button ng-click="saveUser($event)">

js:

$scope.saveUser = function (event) {
  event.preventDefault();
  // your code
}
顾高扬
2023-03-14

如果你看一看W3C规范,那么最明显的尝试就是在你不想提交按钮元素时,用type='button'标记它们。

特别要注意的是它说

没有指定类型属性的按钮元素表示与其类型属性设置为“提交”的按钮元素相同的东西

 类似资料:
  • 问题内容: 我在Angular中有一个表单,其中有两个按钮标签。一键提交表单。另一个按钮仅用于使用进行导航。但是,当单击第二个按钮时,AngularJS导致页面刷新,从而触发404。我在函数中删除了一个断点,并触发了我的函数。如果我执行以下任何操作,它将停止: 如果删除,该按钮不会导致页面刷新。 如果我注释掉函数中的代码,则不会刷新页面。 如果我使用将按钮标签更改为锚标签(),则不会刷新。 后者似

  • 问题内容: 在表单中使用按钮时出现问题。我希望该按钮调用功能。它确实可以,但是刷新页面的结果令人讨厌。 我的简单代码是这样的 单击该按钮后,该函数将在页面刷新时被调用,这会重置所有我先前的请求,这会影响到当前页面,这是先前请求的结果。 我应该怎么做才能防止页面刷新? 问题答案: 让我们返回false。这将解决它。

  • 我需要在商品搜索中键入“香蕉”,然后点击“GO”按钮。 在堆栈溢出的帮助下,我可以调出火狐,输入“香蕉”...但是“Go”按钮(基于检查的Go3)不会开火!! 我试过element.click(),试过ActionChains,试过将光标移动到元素,试过验证它已经启用。它只是不会转到下一个搜索页面。 我没有得到任何错误...它只是没有进入下一页。 谢谢你能提供的任何帮助。快把我逼疯了!

  • 问题内容: 我需要自动单击网页中的任何“添加”按钮,如下所示: “ https://groceries.asda.com/search/yoghurt ” 但是,页面中的“添加”按钮都没有名称或ID。所以我不能使用Selenium包中的命令。 谁能帮我? 问题答案: 要单击特定产品的任何特定按钮,可以编写如下方法: 现在,您可以单击传递其标题的任何按钮,如下所示:

  • 我试图用按钮点击刷新一个div,但一定是出了什么问题。我也在使用ASP.NET和jquery。如果你们能帮我那就太棒了 这里有完整的代码

  • 问题内容: 我正在尝试提交没有页面刷新或提交按钮的表单。但是我只实现了让JS函数提交输入框值。是否可以在不单击按钮和刷新页面的情况下提交整个表单? JSFIDDLE JS html 问题答案: 您的小提琴似乎正在工作,但是问题是您没有真正将其提交到任何地方。