我正在尝试将Mesosphere用于验证我的meteor应用程序,但似乎Mesosphere没有接受我列出的一些原生验证。
我只尝试了一次验证电子邮件的格式,这是必需的长度。例如:
Mesosphere({
name: 'signupForm',
method: 'signupUser',
fields: {
email: {
required: true,
format: 'email',
rules: {
exactLength: 4
},
message: 'Wrong length'
}
},
onFailure: function (errors) {
messages = [];
messages = _.map(errors, function (val, err) {
console.log(val.message);
});
},
onSuccess: function (data) {
alert("Totally worked!")
}
});
'onFailure'(和onSuccess)回调似乎有效,因为它在我提交表单时记录了一些内容。这让我相信我已经在表单提交事件上正确设置了它。在那里你将表单对象传递给Mesosphere以创建validationObject,如果我理解正确的话。例如:
var validationObject = Mesosphere.signupForm.validate(accountData);
提交后,它将 Field Required 记录为错误,这很奇怪,因为我在字段中输入了一些内容。它没有提到不正确的长度或格式。它会跳过“错误长度”消息,我无法在任何地方找到该消息。
所以我的问题是,如果没有为该表单字段的错误输入获取正确的消息,我做错了什么?谢谢:))
此外,愿意就其他验证包提出建议。 Mesosphere利用Meteor的服务器/客户端功能进行验证,因此它似乎是一个很好的起点。
模板:
<template name="signup">
<form name="signupForm" id="signup-form" class="panel" action="#">
<div class="form-group">
<label for="email">Email</label>
<input type="text" name="email" id="email" class="form-control" />
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" name="password" id="password" class="form-control" />
</div>
<div class="form-group">
<input type="submit" value="Sign Up" id="create-account" class="btn btn-success pull-right">
</div>
</form> </template>
在相应的文件中调用此方法:
signupUser: function(accountData) {
var uid = Accounts.createUser(accountData);
}
答案 0 :(得分:0)
所以基本上我在这里看到的是你的规则没有反映如何验证表单。您有一封必须与电子邮件格式匹配的电子邮件,但是您有一条规则说明它必须长度恰好是4个字符..更好的字段定义如下所示:
fields: {
email: {
required: true,
format: 'email',
message: 'Please enter a valid email address'
},
password: {
required: true,
rules: {
minLength: 6,
maxLength: 30,
},
message: "Password must be between 6 and 30 characters"
}
}
我创建了一个github仓库,你可以克隆并运行以测试它,如果你愿意的话。
https://github.com/copleykj/meso-test
希望这有帮助。