jquery - 表单验证被忽略
问题描述
我正在尝试为 wordpress 插件构建自定义注册表单。我正在通过 formvalidator.net 使用 jquery 验证来验证表单字段
尽管验证错误消息按预期显示,但仍会提交表单并注册用户。回调 onError 和 onSuccess 似乎不起作用。这是我的表格,我错过了什么?
<div class="fn-registration-form">
<form class="form-horizontal registration-form" role="form">
<div class="reg-form-group">
<label for="fn_name" class="sr-only">Your Name</label>
<input type="text" name="fn_name" id="fn_name" value="" placeholder="Your Name" class="reg-form-control" data-validation="required length" data-validation-length="min5" data-validation-error-msg-container="#val-error-div" />
</div>
<div class="reg-form-group">
<label for="fn_email" class="sr-only">Your Email</label>
<input type="email" name="fn_email" id="fn_email" value="" placeholder="Your Email" class="reg-form-control" data-validation="required email"data-validation-error-msg-container="#val-error-div"/>
</div>
<div class="reg-form-group">
<label for="fn_pass" class="sr-only">Choose Password</label>
<input type="password" name="fn_pass" id="fn_pass" value="" placeholder="Choose Password" class="reg-form-control" data-validation="required length" data-validation-length="min5" data-validation-error-msg-container="#val-error-div"/>
</div>
<?php wp_nonce_field('fn_new_user','fn_new_user_nonce', true, true ); ?>
<input type="submit" class="btn btn-primary" id="btn-new-user" value="Register" />
</form>
<div style="text-align: center;" id="val-error-div"></div>
<div class="indicator">Please wait...</div>
<div class="alert result-message" id="#name-error-div"></div>
</div>
<script src="<?php echo plugins_url('js/jquery.form-validator.js', __FILE__); ?>" type="text/javascript"></script>
<script>
jQuery.validate({
lang: 'en',
validateOnBlur: true,
scrollToTopOnError: false,
borderColorOnError: "#a94442",
borderColorOnSuccess:"#a94442",
onError: function () {
$('.result-message').html('ERROR..!');
return false;
},
onSuccess: function(){
regnewuserval();
return false;
}
});
</script>
解决方案
我最终使用了一个按钮(而不是 input type="submit")并直接在 onSuccess 回调中添加注册代码,而不是在外部 js 文件中添加一个函数。
此代码有效并解决了我的问题:
<div class="fn-registration-form">
<form class="form-horizontal registration-form" role="form" id="fn-reg-form">
<div class="reg-form-group">
<label for="fn_name" class="sr-only">Your Name</label>
<input type="text" name="fn_name" id="fn_name" value="" placeholder="Your Name" class="reg-form-control" data-validation="required length" data-validation-length="min4" data-validation-error-msg-container="#val-error-div" />
</div>
<div class="reg-form-group">
<label for="fn_email" class="sr-only">Your Email</label>
<input type="email" name="fn_email" id="fn_email" value="" placeholder="Your Email" class="reg-form-control" data-validation="required email"data-validation-error-msg-container="#val-error-div"/>
</div>
<div class="reg-form-group">
<label for="fn_pass" class="sr-only">Choose Password</label>
<input type="password" name="fn_pass" id="fn_pass" value="" placeholder="Choose Password" class="reg-form-control" data-validation="required length" data-validation-length="min6" data-validation-error-msg-container="#val-error-div"/>
</div>
<?php wp_nonce_field('fn_new_user','fn_new_user_nonce', true, true ); ?>
<button type="submit" class="btn btn-primary" id="btn-new-user">Register</button>
</form>
<div style="text-align: center;" id="val-error-div"></div>
<div class="val-error"></div>
</div>
<script src="<?php echo plugins_url('js/jquery.form-validator.js', __FILE__); ?>" type="text/javascript"></script>
<script>
jQuery.validate({
lang: 'en',
validateOnBlur: true,
scrollToTopOnError: false,
onError: function () {
jQuery('.val-error').html('ERROR: Please check your data');
return false;
},
onSuccess: function(){
jQuery('.val-error').hide();
// YOUR CODE GOES HERE
}
});
</script>
推荐阅读
- google-api - “Google Contacts CardDAV API”会在 2021 年夏天与“Contacts API”一起关闭吗?
- api - 无法使用 apikey 连接/命中端点
- java - Java jar(API) 或微服务 - 用于 java 和 python 项目
- ios - iOS Homekit 错误:缺少 API HomeKit 的权利
- c - 如何返回C中每一行的最后一个元素
- mysql - 有什么办法可以填写mysql information_schema.TRIGGERS.created = now()
- .net-core - 使用带有 NHibernate 的 Web api 通过 JSON 插入嵌套对象
- azure - azure yaml 构建管道的摘要选项卡上显示不正确的代码覆盖率百分比
- python - 按 ID 对数据框进行分组并列出文章
- winforms - window.external 对于新窗口为空