我有一个弹簧项目和一个注册特定系统设计评论的任务。 页面的形式如下:
<form id="formularioCadastroComentario" role="form" method="POST" class="form-horizontal">
<input type="hidden" id="projeto" name="projeto" value="${projeto.id}"> <input type="hidden" id="usuario" name="usuario" value="${usuario.id}">
<input type="hidden" id="usuario_nome" name="usuario" value="${usuario.nome}"> <label class="control-label"for="textocomentarioInput"><h3>Novo Comentário</h3></label>
<div class="form-group">
<div class="input-group">
<textarea id="textocomentarioInput" name="texto" class="form-control" placeholder="Comentário" required="required"></textarea>
</div>
</div>
<br> <input name="botao" id="botaoEnviarComentario" class="btn btn-primary" value="Enviar" />
<a href="<c:url value="/projeto/index"></c:url>" class="btn btn-default">Voltar</a>
</form>
在我的jsp页面中有文件funcoes.js的脚本链接,而funcoes.js有一个ajax函数,用于在提交表单后插入注释:
$("#formularioCadastroComentario").submit(function(e) {
var idProjeto = $('#projeto').val();
var idUsuario = $('#usuario').val();
var nomeUsuario = $('#usuario_nome').val();
var cabecalho = "Comentários do Projeto";
var textoComentario = $('#textocomentarioInput').val();
var data = new Date();
var dataFormatada = ("0" + data.getDate()).substr(-2)+ "-" + ("0" +(data.getMonth()+ 1)).substr(-2)+ "-"+ data.getFullYear()+ " "+ ('0' + data.getHours()).slice(-2)+ ":"+ ('0' + data.getMinutes()).slice(-2);
$.ajax({
type : "POST",
data : {
idProjeto : idProjeto,
idUsuario : idUsuario,
texto : textoComentario
},
url : "/gpa-pesquisa/comentario/comentarProjeto",
dataType : "html",
success : function() {
$('#comentarioList').prepend(
'<li class="well">'
+ '<div class="nome_usuario">'
+ nomeUsuario+ '</div>'
+ '<div class="corpo_texto">'
+ textoComentario + '</div>'
+ '<div class="formatacao_data">'
+ dataFormatada + '</div>'
+ '</li>');
$("#headComentarios").show();
}
});
$("#formularioCadastroComentario")[0].reset();
});
我的JSP页面在关闭html标签主体之后有jquery验证码:
<script type="text/javascript">
$(document).ready(function($) {
$("#formularioCadastroComentario").validate({
rules : {
texto : {
minlength : 5,
required : true,
}
},
messages : {
texto : {
required : "Campo obrigatório",
minlength : "O campo deve ter no mínimo 5 caracteres"
}
},
highlight : function(element) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight : function(element) {
$(element).closest('.form-group').removeClass('has-error');
},
errorElement : 'span',
errorClass : 'help-block',
errorPlacement : function(error, element) {
if (element.parent('.input-group').length) {
error.insertAfter(element.parent());
} else {
error.insertAfter(element);
}
}
});
});
问题在于,当我尝试在5个字母或空格下发布新评论时,jquery验证会显示该消息,但如果我提交表单代码则会注册新评论。 我想知道如何验证jquery ajax之前没有工作留下评论用户注册少于5个字母或空格。 谢谢,
答案 0 :(得分:0)
您应该将ajax代码放在submitHandler
方法的.validate()
回调函数中,不是在您自己的.submit()
处理程序中。
$(document).ready(function($) {
$("#formularioCadastroComentario").validate({
submitHandler: function(form) {
var idProjeto = $('#projeto').val();
// the rest of your ajax function...
....
return false; // block the default submit
},
rules : {
texto : {
minlength : 5,
required : true,
}
},
......
submitHandler
:在表单有效时回调处理实际提交。获取表单作为唯一参数。替换默认提交。 验证后通过Ajax 提交表单的正确位置。
required: true
方法中指定.validate()
,因此相应元素不需要required="required"
属性。