【发布时间】:2016-09-23 16:17:49
【问题描述】:
我有两个 Boostrap 表单元素正在尝试验证,至少需要 1 个:
<div class="form-group">
<label>Notification Email:</label>
<input type="email" class="form-control notifGroup" id="notifEmail" name="notifEmail" />
</div>
<div class="form-group">
<label for="phone">Notification Phone Number for SMS:</label>
<input type="text" class="input-medium bfh-phone notifGroup" data-country="US" id="notifPhone" name="notifPhone" />
</div>
我有我的脚本:
<script src="/public/js/jquery-1.12.4.min.js"></script>
<script src="/public/js/jquery.validate.min.js"></script>
<script src="/public/js/additional-methods.min.js"></script>
jQuery 验证版本 1.15.0
还有我的验证功能:
$(document).ready(function() {
$('#form').validate({
rules: {
notifPhone: {
require_from_group: [1, ".notifGroup"]
},
notifEmail: {
require_from_group: [1, ".notifGroup"]
}
},
messages: {
},
submitHandler: function(form) {
var email = $('#notifEmail').val()
var phone = $('#notifPhone').val()
data = {
phone,
email
}
$.ajax({
type: 'POST',
url: 'http://myurl/myendpoint',
data: data,
success: function(res) {
if (res == true) {
$('#error').html('<p><strong>all good.</strong></p>')
$('#form')[0].reset()
$('#submitBtn').hide()
setTimeout(function() {
$('#error').html('<p></p>')
}, 5000)
}else if (res == 'over limit'){
$('#error').html('<p><strong>too many.</strong></p>');
setTimeout(function() {
$('#error').html('<p></p>')
}, 5000)
}else {
$('#error').html('<p><strong>already there.</strong></p>');
$('#form')[0].reset();
$('#submitBtn').hide()
setTimeout(function() {
$('#error').html('<p></p>')
}, 5000)
}
},
error: function(err) {
console.log(err);
},
timeOut: 5000
});
return false;
}
});
});
在决定只需要 1 个电子邮件或电话号码之前,一切正常。在直接验证下两者都需要时,没有问题。
但是现在,当尝试只需要一个时,不会引发任何错误,并且表单只会提交空白值。如果我为一个或两个选择器而不是 .notifGroup 输入错误数据,则错误会在具有正确选择器的字段上引发(或两者都带有错误数据),但即使两个字段都已填写,表单也不会提交。
非常感谢任何帮助。
【问题讨论】:
-
我已经注释了我的代码并将代码从 Sparky 的工作 JSFiddle 复制到我的项目中,但它仍然无法正常工作。是否存在我缺少的依赖关系,或者可能是我的 JS 脚本的命令错误?它去 jQuery-jQValidate-additionalmethods-bootstrap-myajaxfile-myformvalidation-bootstrapformhelpers?
-
@Sparky,只有当我在规则中有不正确的选择器或没有选择器时才会显示错误消息。但显然表单不会提交。
-
您是否关注我上次关于使用插件调试选项的评论?
-
是的,我在控制台中仍然没有错误。
-
这太疯狂了,因为在你的小提琴奏效时,某处必须有所不同。但是对于我的生活,我无法弄清楚问题可能是什么,因为您的代码在我的项目中不起作用,并且我的所有代码都被注释了。
标签: jquery forms twitter-bootstrap jquery-validate