【发布时间】:2015-09-24 22:30:49
【问题描述】:
所以,
我一直在使用 jQuery Validate 进行验证,但我偶然发现了一些令我困惑的东西。
我有正确验证的表单,它工作正常,但这个表单是模态的。现在很重要,但是当我点击提交时,它会激活一个 ajax 帖子,模式消失并且页面上的 DIV 会更新。
发生的情况是:验证有效,但 ajax 仍然发布。
首先:这里是 Javascript 验证:
<script>
$(function() {
$.validator.setDefaults({
errorClass: 'help-block',
highlight: function(element) {
$(element)
.closest('.form-group')
.addClass('has-error');
},
unhighlight: function(element) {
$(element)
.closest('.form-group')
.removeClass('has-error');
},
errorPlacement: function (error, element) {
if (element.prop('type') === 'radio') {
error.insertAfter(element.parent());
} else {
error.insertAfter(element);
}
}
});
$("#testForm").validate({
rules: {
contractNumber: {
required: true
},
dateFrom: {
required: true,
nowhitespace: true
},
dateTo: {
required: true,
nowhitespace: true
},
contractType: {
required: true
}
},
messages: {
contractNumber: {
required: 'Please enter a contract number.'
}
}
});
});
</script>
<script>
$(document).ready(function() {
$("#testForm").submit(sendForm)
});
function sendForm() {
$.post('index.cfm/candidate/putContract',$("#testForm").serialize(),function(data,status)
{
$('#addContract').modal('hide');
$("#contractView").html(data)
});
return false
}
</script>
此脚本隐藏模式,然后发布结果。
我希望发生的是验证发生并且只有在验证通过时才推送。
http://jsfiddle.net/mwoods98/bh6t2h78/
这是一个设置好的小提琴。它不发布。
提前致谢!
【问题讨论】:
-
在您的提交事件中,您可以检查表单是否有效。试试这个
$('form').on('submit', function(e){ if(form.valid() == false){ e.preventDefault()} }); -
这行得通。我确实在控制台中看到了这一点 Uncaught ReferenceError: form is not defined 应该从被命名为表单的名称吗?谢谢!
-
你能解决这个问题吗?
-
它与控制台中的该消息正常工作。所以,除此之外它工作正常。感谢您的帮助。