javascript - 如何在提交表单后使用 'Loading' 更改按钮文本并在以 Angular 提交后重置表单

标签 javascript jquery angularjs forms

var app = angular.module('snc', []);
app.controller('contactForm', function($scope, $http) {
  $scope.user = {};
  $scope.submitForm = function() {
    $http({
        method: 'POST',
        url: 'php-form/form.php',
        data: $scope.user,
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded'
        }
      })
      .success(function(data) {
        console.log(data);
        if (!data.success) {
          if ($scope.errorName = data.errors.name) {
            $(".alert-set").removeClass('alert-danger');
            $(".alert-set").removeClass('alert-success');
            $(".alert-set").fadeIn(1000);
            $(".alert-set").removeClass("hide");
            $(".alert-set").fadeOut(5000);
            $(".alert-set").addClass('alert-warning');
            $(".Message-txt").text(data.errors.name);
          } else if ($scope.errorMobile = data.errors.mobile) {
            $(".alert-set").removeClass('alert-danger');
            $(".alert-set").removeClass('alert-success');
            $(".alert-set").fadeIn(1000);
            $(".alert-set").removeClass("hide");
            $(".alert-set").fadeOut(5000);
            $(".alert-set").addClass('alert-warning');
            $(".Message-txt").text(data.errors.mobile);
          } else if (data.errors.email == 'fail') {
            $(".alert-set").removeClass('alert-danger');
            $(".alert-set").removeClass('alert-success');
            $(".alert-set").fadeIn(1000);
            $(".alert-set").removeClass("hide");
            $(".alert-set").fadeOut(5000);
            $(".alert-set").addClass('alert-warning');
            $(".Message-txt").text('Sorry, Failed to send E-mail.');
          } else {
            $(".alert-set").removeClass('alert-warning');
            $(".alert-set").removeClass('alert-success');
            $(".alert-set").fadeIn(1000);
            $(".alert-set").removeClass("hide");
            $(".alert-set").fadeOut(5000);
            $(".alert-set").addClass('alert-dnager');
            $(".Message-txt").text('somthing went wrong please try again.');
          }
        } else {
          $(".alert-set").removeClass('alert-danger');
          $(".alert-set").removeClass('alert-warning');
          $(".alert-set").fadeIn(1000);
          $(".alert-set").removeClass("hide");
          $(".alert-set").fadeOut(5000);
          $(".alert-set").addClass('alert-success');
          $(".Message-txt").text(data.message);
          this.submitForm = {};
        }
      });
  };
});
<form name="queryForm" ng-submit="submitForm()" novalidate>
  <div class="form-group">
    <label for="Name">Name:<span class="text-danger">*</span></label>
    <input type="text" class="form-control" ng-model="user.name" id="name" placeholder="Enter Your Name">
  </div>
  <div class="form-group">
    <label for="Mobile">Mobile:<span class="text-danger">*</span></label>
    <input type="number" class="form-control" ng-model="user.mobile" id="mobile" placeholder="Enter Your Mobile Number">
  </div>
  <div class="form-group">
    <label for="email">Email:</label>
    <input type="email" class="form-control" ng-model="user.email" id="email" placeholder="Enter Your Email">
  </div>
  <div class="form-group">
    <label for="Message">Message:</label>
    <textarea type="text" class="form-control" ng-model="user.message" id="name" placeholder="Enter Your Message" rows="4"></textarea>
  </div>
  <button type="submit" class="btn btn-snc">Submit</button>
  <div class="alert alert-dismissible alert-set">
    <strong class='Message-txt'></strong>
  </div>
</form>

我有一个简单的联系表单,它必须将查询数据发送到 php 页面,我想在提交表单后禁用按钮并更改按钮文本,并在提交后重置完整表单。我尝试过,但总是出现某种类型的 Angular 误差。你能帮我解决这个问题吗?如果你是 Angular 开发人员,那么你能检查一下这个表格,让我知道我是否需要更改某些内容。

最佳答案

要重置表单,您可以使用以下内容:

(注意:您有两个 name ID。ID 应该是您页面上的 UNIQ)。

function onSubmit()
{
  $('#submit_button').text('Loading…');
  resetForm();
}

function resetForm()
{
  for(let id of ['name','mobile','email', 'message'])
  {
    $("#"+id).val('');
    
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="queryForm" ng-submit="submitForm()" novalidate>
  <div class="form-group">
    <label for="Name">Name:<span class="text-danger">*</span></label>
    <input type="text" class="form-control" ng-model="user.name" id="name" placeholder="Enter Your Name">
  </div>
  <div class="form-group">
    <label for="Mobile">Mobile:<span class="text-danger">*</span></label>
    <input type="number" class="form-control" ng-model="user.mobile" id="mobile" placeholder="Enter Your Mobile Number">
  </div>
  <div class="form-group">
    <label for="email">Email:</label>
    <input type="email" class="form-control" ng-model="user.email" id="email" placeholder="Enter Your Email" value="some text">
  </div>
  <div class="form-group">
    <label for="Message">Message:</label>
    <textarea type="text" class="form-control" ng-model="user.message" id="message" placeholder="Enter Your Message" rows="4">Some text</textarea>
  </div>
  <button id="submit_button" type="button" class="btn btn-snc" onclick="onSubmit()">RESET FORM</button>
  <div class="alert alert-dismissible alert-set">
    <strong class='Message-txt'></strong>
  </div>
</form>

关于javascript - 如何在提交表单后使用 'Loading' 更改按钮文本并在以 Angular 提交后重置表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46986208/

相关文章:

javascript - 如何从 MVC 中的 Javascript 代码将值传递到 Controller

javascript - 我在输入类型文件中的 onChange 之后得到未命名状态 - ReactJS

javascript - 从数组中获取最大和最小日期

jquery - 将 HTML 渲染到 Div (jQuery/ColdFusion/Ajax)

javascript - 等待 JQuery div 加载

javascript - 有没有办法限制 ng-repeat 中重复项目的数量?

javascript - 如何确保下拉字段是提交的必填输入字段

javascript - DOM、Jquery 和 Accordions

javascript - Angular JS 中的嵌套 ng-repeat

javascript - Angular X-Editable 使可编辑字段出现在下一个表格单元格中