当前位置: 首页 > 面试题库 >

仅在提交或用户输入时验证表单字段

许曦
2023-03-14
问题内容

我有使用验证的表单字段required。问题在于,呈现表单时会立即显示错误。我只希望在用户实际在文本字段中键入或提交后才显示它。

我该如何实施?


问题答案:

$dirty仅在用户与输入交互后,使用标志显示错误:

<div>
  <input type="email" name="email" ng-model="user.email" required />
  <span ng-show="form.email.$dirty && form.email.$error.required">Email is required</span>
</div>

如果仅在用户提交表单后才想触发错误,则可以使用单独的标志变量,如下所示:

<form ng-submit="submit()" name="form" ng-controller="MyCtrl">
  <div>
    <input type="email" name="email" ng-model="user.email" required />
    <span ng-show="(form.email.$dirty || submitted) && form.email.$error.required">
      Email is required
    </span>
  </div>

  <div>
    <button type="submit">Submit</button>
  </div>
</form>



function MyCtrl($scope){
  $scope.submit = function(){
    // Set the 'submitted' flag to true
    $scope.submitted = true;
    // Send the form to server
    // $http.post ...
  } 
};

然后,如果ng-show表达式内的所有JS 看上去对您来说太多了,您可以将其抽象为一个单独的方法

function MyCtrl($scope){
  $scope.submit = function(){
    // Set the 'submitted' flag to true
    $scope.submitted = true;
    // Send the form to server
    // $http.post ...
  }

  $scope.hasError = function(field, validation){
    if(validation){
      return ($scope.form[field].$dirty && $scope.form[field].$error[validation]) || ($scope.submitted && $scope.form[field].$error[validation]);
    }
    return ($scope.form[field].$dirty && $scope.form[field].$invalid) || ($scope.submitted && $scope.form[field].$invalid);
  };

};



<form ng-submit="submit()" name="form">
  <div>
    <input type="email" name="email" ng-model="user.email" required />
    <span ng-show="hasError('email', 'required')">required</span>
  </div>

  <div>
    <button type="submit">Submit</button>
  </div>
</form>


 类似资料:
  • 问题内容: 我正在使用带有一些客户端输入验证的angularjs编写一个简单的登录表单,以检查用户名和密码是否为空且长度不超过三个字符。请参见以下代码: 和控制器: 问题是即使输入无效,该函数也会被调用。有可能防止这种行为吗? 附带一提,我可以提到我也使用了bootstrap和requirejs。 问题答案: 你可以做: 无需控制器检查。

  • 我的页面中有以下javascript,它似乎不起作用。 我想在回车时禁用提交表单,或者更好的是,调用我的ajax表单提交。这两种解决方案都是可以接受的,但是我上面包含的代码不会阻止表单提交。

  • 用户提交表单后如何保留他们的输入? 例如: 如果用户键入 fname 和 lname,是的,它会回显出来。但是我想在输入类型中保留他们的名字和姓氏,这样如果表单很长,用户就不需要再次填写。

  • 本文向大家介绍jQuery EasyUI提交表单验证,包括了jQuery EasyUI提交表单验证的使用技巧和注意事项,需要的朋友参考一下 EasyUI的form表单里面的验证框,先讲解下validatebox类和相关的属性。 验证规则 验证规则是通过使用 required 和 validType 特性来定义的, 这里是已经实施的规则: email:匹配 email 正则表达式规则,系统提供的属性

  • 问题内容: 我正在构建一个两步表单的Angular JS应用。它实际上只是一种形式,但是当用户单击“下一步”按钮并转到步骤2时,使用JavaScript隐藏了第一个面板,并显示第二个面板。我在步骤1中的某些字段上设置了“必需”验证但是很明显,当用户单击“下一步”按钮时,它们不会得到验证…在步骤2的最后单击“提交”按钮时,它们将得到验证。 单击“下一步”按钮时,有什么方法可以告诉angular验证表

  • 问题内容: 我有一个相当简单的登录表单,该表单随jQuery AJAX请求一起提交。当前,提交表单的唯一方法是按下“登录”按钮,但是我希望能够在用户按下“ Enter”时提交表单。 我只使用jQuery AJAX请求完成表单提交,但是我不确定要在用户按下“ Enter”键时提交表单也需要进行哪些修改。 HTML: JavaScript: 摘录自login.php: 问题答案: 在表单中添加一个ID