gpt4 book ai didi

javascript - 如何使用angular js验证 ionic 形式

转载 作者:数据小太阳 更新时间:2023-10-29 05:57:39 25 4
gpt4 key购买 nike

我正在尝试将 ionic 框架与 Angular 一起使用。我想在单击按钮时验证我的表单。意味着我需要在单击按钮时验证所有字段。所有字段都是必需的..我需要显示一条错误消息如果一个字段不满足要求。比如密码最少 5 个字符,最多 10 个字符。还有电子邮件验证。

你能告诉我我将如何进行验证吗?这是我的 code

<html ng-app="">
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">

<title>Sign-in, Then Tabs Example</title>

<link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet">
<script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script>

</head>

<body>

<ion-view title="Page">
<ion-content padding="true" class="has-header has-footer">
<form>
<label class="item item-input">
<span class="input-label">name</span>
<input type="text" placeholder="name">
</label>
<label class="item item-input">
<span class="input-label">email</span>
<input type="email" placeholder="email">
</label>
<label class="item item-input">
<span class="input-label">password</span>
<input type="password" placeholder="password">
</label>
</form>
<button class="button button-balanced button-block">check validation</button>
</ion-content>
</ion-view>

</body>
</html>

最佳答案

我可能会迟到,但这是你可以做的。

首先,您需要使用 ng-submit 指令定义一个表单(就像您所做的那样),以便您的表单可以 POST 到 Controller 。

<body ng-app="myApp">
<ion-view title="Page">
<ion-content padding="true" class="has-header has-footer">
<form name="loginForm" ng-submit="$scope.login($scope.user);" novalidate>
<label class="item item-input">
<span class="input-label">name</span>
<input type="text" placeholder="name" ng-model="$scope.user.username" form-validate-after>
</label>
<label class="item item-input">
<span class="input-label">email</span>
<input type="email" placeholder="email" ng-model="$scope.user.email" form-validate-after>
</label>
<label class="item item-input">
<span class="input-label">password</span>
<input type="password" placeholder="password" ng-model="$scope.user.password" form-validate-after>
</label>
</form>
<button class="button button-balanced button-block">check validation</button>
</ion-content>
</ion-view>
</body>

我正在将一个模型传递到我的输入字段,以便稍后阅读它们。我用自定义指令 form-validate-after 标记了每个输入。

这是我创建的指令:

(function () {

'use strict';

angular
.module('myApp', ['ionic'])
.directive('formValidateAfter', formValidateAfter);

function formValidateAfter() {
var directive = {
restrict: 'A',
require: 'ngModel',
link: link
};

return directive;

function link(scope, element, attrs, ctrl) {
var validateClass = 'form-validate';
ctrl.validate = false;
element.bind('focus', function (evt) {
if (ctrl.validate && ctrl.$invalid) // if we focus and the field was invalid, keep the validation
{
element.addClass(validateClass);
scope.$apply(function () { ctrl.validate = true; });
}
else {
element.removeClass(validateClass);
scope.$apply(function () { ctrl.validate = false; });
}

}).bind('blur', function (evt) {
element.addClass(validateClass);
scope.$apply(function () { ctrl.validate = true; });
});
}
}

}());

此代码将遍历所有输入字段,如果它被标记为无效,则添加一个类。

你需要定义一个css:

.form-validate.ng-invalid {
border: 3px solid #cc2511;
}
.form-validate.ng-valid {
border: none;
}

不要忘记将 novalidate 添加到您的表单中。

novalidate is used to disable browser's native form validation.

如果要将字段设置为必填字段并定义最大和最小长度:

<input name="password" type="password" placeholder="password" ng-model="$scope.user.password" required ng-minlength='5' ng-maxlength='10'>

如果您想实际查看此示例,可以查看它 here .

更新

另一种方法是在每个标签上设置所有内联更改类:

<label class="item item-input" ng-class="{ 'has-errors' : loginForm.username.$invalid && !loginForm.username.$pristine, 'no-errors' : loginForm.username.$valid}">
...
</label>

在这里你必须给每个字段一个 name 并使用 ng-class 指令。

The ngClass directive allows you to dynamically set CSS classes on an HTML element by databinding an expression that represents all classes to be added.

您可以在实际中看到它 here .

关于javascript - 如何使用angular js验证 ionic 形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29128304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com