流星 - 自定义注册.显示所有验证错误,而不是一个
Meteor - custom signup. Show all validation errors instead of one
这是我的JS(流星)代码:
Template.register.events({
'submit #register-form': function(event, template) {
event.preventDefault();
//Reset sessions
Session.set("PwFieldErr", false);
Session.set("EmFieldErr", false);
// Get input values
var email = template.find('#account-email').value,
password = template.find('#account-password').value,
repeatPassword = template.find('#confirm-password').value;
// Check if inputs not empty
// Trim Email
var trimInput = function(val) {
return val.replace(/^'s*|'s*$/g, "");
}
var email = trimInput(email);
// Validate Email
var emailRe = new RegExp("^[-a-z0-9!#$%&'*+/=?^_`{|}~]+(?:'.[-a-z0-9!#$%&'*+/=?^_`{|}~]+)*@(?:[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])?'.)*(?:aero|arpa|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|[a-z][a-z])$");
var isValidEmail = function(val) {
if (emailRe.test(val)) {
return true;
} else {
sAlert.error('Invalid email!');
Session.set("EmFieldErr", true);
return false;
}
}
// Validate Password
var re = /^(?=.*'d)(?=.*[a-zA-Z]).{6,}$/;
var isValidPassword = function(val, rval) {
if (re.test(val) && val == rval) {
return true;
} else if (!re.test(val)) {
sAlert.error('Your password must be at least 6 characters long and contain at least 1 number');
Session.set("PwFieldErr", true);
return false;
} else if (rval != val) {
sAlert.error('Your passwords does not match');
Session.set("PwFieldErr", true);
return false;
}
}
// If Password ok -> Register user
if (isValidEmail(email) && isValidPassword(password, repeatPassword)) {
Accounts.createUser({
email: email,
password: password
}, function(error) {
if (error) {
// Inform the user that account creation failed
sAlert.error(error.reason);
} else {
// Success. Account has been created and the user
// has logged in successfully.
sAlert.success('Account created successfully');
}
});
}
return false;
}
});
目前,此代码在返回第一个false
后停止,因此如果之前有从isValidEmail
函数返回false
isValidPassword
函数甚至不会触发。如何进行所有验证检查,然后向用户显示所有验证错误?我假设我应该只使用一个返回true
& false
,然后我应该再做一个函数,它将显示所有验证错误消息并返回true
或false
。
只需将调用弹出到它们自己的变量中:
var validEmail = isValidEmail( email );
var validPW = isValidPassword( password, repeatPassword );
if (validEmail && validPw) {
Accounts.createUser({
email: email,
password: password
}, function(error) {
if (error) {
// Inform the user that account creation failed
sAlert.error(error.reason);
} else {
// Success. Account has been created and the user
// has logged in successfully.
sAlert.success('Account created successfully');
}
});
}
相关文章:
- 我怎么能把一个错误当作未捕获的错误来记录呢
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- javascript window.location在检查firebug时给了我一个错误的url路径
- new SharedWorker(“whatever.js”)返回一个错误
- JSON.parse给了我一个错误,但JSONLint说它'是一个有效的json
- 有人能向我解释一下我犯的一个错误吗
- Jasmine:测试setTimeout函数会抛出一个错误
- JavaScript中的一个错误
- 为什么jqPlot显示了一个错误的饼图,其中包含通过AJAX检索的数据
- Webrtc和socket.io:createanswer()总是有一个错误.为什么?我的代码连接了两个对等体,但其中只
- 使用 jQuery 构建一个元素会给我一个错误
- Chai 期望 [函数] 抛出一个(错误)未通过测试(使用 Node)
- 在我的 jquery 函数中得到一个错误
- Addeventlistener 已转换为 IE.也许是另一个错误
- 我有一个错误,由于某种原因,号码被更改了,而不是名字
- 我无法建立离子机器人项目..它给了我一个错误:生成cmd enont
- JQueryAJAX调用:304 respose产生一个错误
- 继续得到一个错误,即某个东西不是函数,但找不到原因
- jQuerylib会导致一个错误,直到刷新为止
- HTML图像加载触发一个错误