我使用远程验证进行用户注册以检查已经使用的电子邮件,它在更改时正常工作,但在提交时不会触发验证。因此,如果用户输入已经使用的电子邮件,他将收到错误消息,但是当他提交请求时忽略错误并执行ajax调用。
这是我的电子邮件输入:
<div id="userPanel">
...
<input id="emailInput" class="form-control" type="text" name="email" data-parsley-type="email" data-parsley-required="true" data-parsley-trigger="change" data-parsley-remote="@Url.Action("CheckIsEmailUnique", "Onboarding")" data-parsley-remote-message="Email must be unique."/>
...
</div>
使用Javascript:
var parsleyForm = $('#userPanel').parsley();
$("#saveNewUser").click(function () {
var isValid = parsleyForm.validate();
if (isValid) {
...
ajaxCall(...);
}
}
答案 0 :(得分:2)
当您使用Parsley.remote.js时,可以使用两种新方法:asyncValidate()
和asyncIsValid()
返回promises。
Parsley.remote.js在asyncValidate()
个事件和表单提交时自动绑定data-parsley-trigger
。
如果您想通过javascript在表单提交上手动控制欧芹,请使用:
var parsleyForm = $('#userPanel').parsley();
$("#saveNewUser").click(function () {
parsleyForm.asyncValidate()
.done(function () { console.log('success'); })
.fail(function () { console.log('there is an error'); })
.always(function () { console.log('done everytime whatever happens'); });
}