在表单上提交尝试在控制器中运行函数以检查匹配的密码以及电子邮件字段是否包含类。
Scenerios:
如果密码不匹配则无法
如果电子邮件包含ng-invalid
,则表示无法
密码验证就好了,问题是试图查看电子邮件字段是否在表单提交后包含一个类。
在jQuery中会写:
if($(#email).hasClass('ng-invalid'){//email is invalid man return false;}
但是在Angular中没有使用jQuery。在vanilla JS中尝试了几种方法来查看#email是否具有类'ng-invalid'但它不起作用。 JavaScript Check If Element Has Class
最终结果是在Jasmine单元测试中使用函数“formValidate()”来验证formValidate()是true还是false。
基本实施:
Jasmine(这应该失败):
it('Join Now button should be enabled when form fields are valid.',
function(){
var ctrl = createController();
$httpBackend.flush();
var joinNowBtn = registrationEl.find('.join-now-btn');
$rootScope.user = {
'email': 'hola@friend.c',
'password': 'abc',
'passwordConfirm': 'abc'
};
expect($rootScope.formValidate()).toBeTruthy(); //THIS TEST SHOULD FAIL
//expect submit button to not have a disabled attribute
});
答案 0 :(得分:3)
您不需要检查ng-invalid
课程。只需检查$scope.registration_form.email.$invalid
是true
还是false
。
$scope.user.email.$invalid
无法正常工作,因为$scope.user.email
只是一个字符串。
表单验证信息放入$scope.formName
。您可以使用以下内容:
$scope.formName.$invalid === true
$scope.formName.fieldName.$invalid === true
答案 1 :(得分:0)
您可以使用hasClass()
Angular本身可以访问jqLite的var unixtime = new Date(timestamp).getTime() / 1000;
。
答案 2 :(得分:0)
你不应该像jQuery一样检查类。您可以通过将表单传递到提交函数并检查email.$invalid
是真还是假来检查表单输入的有效性。所以像这样:
<强> HTML 强>
ng-submit="submitForm(this.registration_form)"
js功能
$scope.formValidate = function(form){
if(form.email.$invalid){
alert('email is invaid')
return;
}
// etc.
}