私は解決できないような問題に直面しています。 私は入力値と正規表現を一致させる指令を使って検証するフィールドを持っています。AngularJSは指令による申告時に再確認します
マイ入力:
<input type="text"
name="emailaddress"
class="form-control"
ng-model="fields.emailaddress.value"
ng-maxlength="fields.emailaddress.validation.maxLength"
validator-emailaddress
required />
マイディレクティブ:
はangular.module('forms')
.directive('validatorEmailaddress', validatorEmailaddress);
/* @ngInject */
function validatorEmailaddress() {
var directive = {
require: 'ngModel',
link: link
};
return directive;
function link(scope, element, attrs, modelCtrl) {
var valid = false;
var formatter = function (inputValue) {
if (inputValue) {
var res = inputValue.match(/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/);
if (res && res.length > 0) {
valid = true;
}
modelCtrl.$setValidity('pattern', valid);
valid = false;
}
return inputValue;
};
modelCtrl.$parsers.push(formatter);
if (scope[attrs.ngModel] && scope[attrs.ngModel] !== '') {
formatter(scope[attrs.ngModel]);
}
}
}
今私の問題はこれです:
私は入力に記入し、すべてが、しかし、罰金のときI無効な値で入力を埋めると、この場合はモーダルを再び開くと無効なパターンが存在しなくなり、ユーザーは無効な入力値を続けることができます。
送信時に入力値を確認するにはどうすればよいですか?
ありがとうございます。
バリデータではなく、パーサーを定義しました。カスタム検証(https://docs.angularjs.org/guide/forms) – fantarama
を参照してください。 ng-click()を使用して関数を呼び出して電子メールを検証し、angle $ httpという形式でフォームを送信することができます。 – maleeb
あなたが聞いていることは分かりませんが、入力フィールドに追加できるng-pattern属性があります。正規表現が必要です。入力が間違っていれば、form.input。$ error.patternが使えるようになります。カスタム検証用ですhttps://docs.angularjs.org/api/ng/directive/ngPattern –