私はangularjsのフォーム検証のためのカスタム指令を持っていますが、これはif条件がうまく動作しますが、条件は複数回実行されます。誰もこのことから私を助けることができますか?ここでif文の実行を一度に止めるには、condtiionチェック?
はUがfalseを返す使用することができ、私の検証directive.js、
app.directive("formValidate", function() {
return {
require: 'ngModel',
template: '<p>Please Fill this Field</p>',
//scope: true,
link: function(scope, elem, attr) {
scope.$watch(attr['ngModel'], function(value) {
var NameValidator = angular.element("<p class='NameError'>This field is required!</p>");
var EmailValidator = angular.element("<p class='EmailError'>This Email is Invalid!</p>");
var PhoneValidator = angular.element("<p class='PhoneError'>Enter Number Only</p>");
if (attr['name'] == "name") {
if (((value || '').toString()).length == 0) {
NameValidator.insertAfter(elem);
return;
} else {
var nameRemove = elem[0].nextSibling;
nameRemove.remove();
}
}
if (attr['name'] == 'email') {
if (!(/^[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,4}$/.test(value))) {
console.log('1:', value);
EmailValidator.insertAfter(elem);
return;
} else {
console.log('2:', value);
var emailRemove = elem[0].nextSibling;
emailRemove.remove();
}
}
if (attr['name'] == 'number') {
if (!(/^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/.test(value))) {
PhoneValidator.insertAfter(elem);
return;
} else {
var phoneRemove = elem[0].nextSibling;
phoneRemove.remove();
}
}
})
}
}
});
。複数の検証メッセージが表示される状況ですか? –
いいえ、条件が一致すると一度に電子メールエラーを追加したいと思いますが、それぞれの文字を入力している間は実行しません。 –
else { var emailRemove = elem [0] .nextSibling; emailRemove.remove(); falseを返します。 }、これはどうですか? –