html - HTML 表单验证未出现
问题描述
这一切都是新的,但本质上我正在尝试通过浏览器默认值使用 HTML 表单验证。该表单使用 JQuery 脚本来提交表单。我浏览了类似的帖子并更新了我的代码,但仍然没有运气。如果我在没有输入任何内容的情况下单击“订阅”按钮,则不会出现任何提示。
HTML
<form class="form-inline" id="sub-form">
<div class="flex-fill mr-2">
<div class="mc-form-group-FNAME" style="display: inline">
<input type="name" class="form-control required" name="FNAME" id="mce-FNAME" value="" placeholder="First name" required />
</div>
<div class="mc-form-group-EMAIL" style="display: inline">
<input type="email" class="form-control required email" name="EMAIL" id="mce-EMAIL" value="" placeholder="Email address" required />
</div>
<button type="submit" class="btn btn-primary" id="subscribe-btn" onclick="submitForm()">Subscribe</button>
</div>
<div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_8a28f24e93a8a23b993145f05_2d6480ea6a" tabindex="-1" value=""></div>
</form>
jQuery/JS
//Mail Chimp form submission
$('#sub-form').MailChimpForm({
url: 'https://-.us19.list-manage.com/subscribe/post?u=8a28f24e93a8a23b993145f05&id=2d6480ea6a',
fields: '0:FNAME,1:EMAIL',
submitSelector: '#subscribe-btn',
customMessages: {
E001: 'This field can not be empty',
E003: 'Please enter a valid email address',
},
onFail: (message) => {
if ((message.indexOf("already") >= 0) || (message.indexOf("recent")) >=0) {
alert('This email address is already subscribed. Stay tuned for our newsletter!')
}
},
onOk: function() {
$('#subscribe-ok').modal('show');
$('#sub-form').each(function() {
this.reset();
});
}
});
更新
因此,如果我删除所有 JQuery,则在进行更多测试后,HTML 验证将起作用。一旦我将它添加回来,它就消失了。为什么我的 JS 会破坏 HTML 验证?
解决方案
感谢大家的回复。最后我完全选择了 JQuery 并实现ToolTipster
了JQuery Validate
. 最终代码如下。
$("#sub-form").validate({
errorPlacement: function(error, element) {
var ele = $(element),
err = $(error),
msg = err.text();
if (msg != null && msg !== "") {
ele.tooltipster('content', msg);
ele.tooltipster('open'); //open only if the error message is not blank. By default jquery-validate will return a label with no actual text in it so we have to check the innerHTML.
console.log("form validation attempted")
}
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass).tooltipster('close');
},
rules: {
field1: {
required: true,
email: false
},
field2: {
required: true,
email: true
}
},
submitHandler: function(form) { // for demo
alert('valid form');
return false;
}
});
//Run validation on form for subscribe attempt
$('#subscribe-btn').click(function () {
if ($("#sub-form").valid()) {
console.log('hello - valid form');
} else {
console.log('uh oh invalid form');
}
});
推荐阅读
- wordpress - 在 Wordpress 中使用参数清理 URL
- php - Laravel:如何在 Laravel 中找到公用文件夹?
- google-cloud-platform - 谷歌云平台 Auto ML
- r - 如何使用包括ggplot2在内的应用函数组合多个R函数
- groovy - Apache Nifi 1.6:崩溃 Groovy 脚本
- android - 如何使用 StateListAnimator 在 Android 中为图像按钮的背景设置动画?
- deep-learning - 是否可以删除最古老的 DQN 体验
- android - 如何使用 Uri 获取铃声标题
- postgresql - 如何优化 PostgreSQL GIN 索引中的查询不起作用
- android - 为什么构建 APK 和签名 APK 中的 Settings.Secure.ANDROID_ID 不同?