我的表单遇到了很大的问题,我使用Semantic UI实时验证。
HTML:
<form class="ui form pin-form">
<div class="field">
<label>Email</label>
<input placeholder="name@example.com" name="email_input" type="text">
</div>
<div class="ui buttons">
<input type="submit" class="ui submit positive disabled button login-button" value="Log in">
</div>
</form>
我自己添加了<form>
代码并将提交内容发送到input
,以便我可以访问常规submit form
。
实时验证来自Semantic UI和Meteor包:https://github.com/avrora/live-form-validator
在模板渲染上我这样做:
if (!this._rendered) {
this._rendered = true;
pinForm = $('.ui.form.pin-form');
pinForm.form({
my_text_input: {
identifier: 'email_input',
rules: [
{
type: 'empty',
prompt: 'Type your email address'
},
{
type: 'email',
prompt: 'This is not yet a valid email address'
}
]
}
},
{
inline: true,
on: 'blur',
transition: 'slide down',
onSuccess: function () {
var submitButton = $('.ui.submit.button')
submitButton.removeClass('disabled')
return false
},
onFailure: function() {
var submitButton = $('.ui.submit.button')
submitButton.addClass('disabled')
}
})
}
这里的一个大问题是,使用return false
即使单击提交按钮也不会提交表单,如果没有它,它会实时提交表单,这是我不想要的! / p>
任何人都可以看到解决方法或我是否需要以某种方式切换验证?
答案 0 :(得分:0)
如果您想要Meteor.call
,可以尝试在onSuccess
功能中执行此操作。该软件包确实要求您在onSuccess
功能中手动保存数据。
以下代码记录了两次电子邮件。
onSuccess: function () {
console.log("Email: ", $("input[name=email_input]").val());
// Submit your form here using a Meteor.call maybe?
return false;
},
您也可以查看aldeed:autoform处理Meteor中的表单。
答案 1 :(得分:0)
这可能是所有SO的最愚蠢的问题。 (别担心,我问了这个问题,所以我只是在嘲笑自己!)
语义用户界面实际上提供了on: change
设置,它将实时验证表单,而不是现在设置的on: blur
。
哦,伙计......