我有这个JSP,找最后一行有主要问题的主要部分:
<script type="text/javascript">
function validate() {
if( $('#title_post').val() == "" || $('#content_post').val() == "" ){
alert('Por favor preencha todos os campos da mensagem.');
return false;
}
else
return true;
}
</script>
<script>
$(document).ready(function(){
$("#xdef").tagcloud({colormin:"d88",colormax:"0a0",height:300});
});
function seta_type(obj){
document.getElementById('topicType').value = obj;
}
</script>
<div id="wrapper">
<div id="col-left">
<c:url value="/${company}/produto/${product}/topico/addtopic.html" var="linkPost"/>
<form:form action="${linkPost}" modelAttribute="topic"
method="post" onsubmit="return validate();">
最后一行有一个return validate()
,如果我保持这样,我的表单会在字段未填充时给我一个警报,好吧,这就是我想要的。
- 我的问题是,我尝试从该页面中删除返回信息**,如果我这样做,我会收到警报,但当我按"确定"时,servlet会继续其常规操作,而不是停留在同一页面中...
为什么会这样?
顺便说一句,我是一个新的JavaScript来详细解释它请。
3条答案
按热度按时间dldeef671#
当你从你的函数
validate()
中return false
时,那个false
值实际上并没有传递给事件处理器。你需要直接将函数的结果return
到onsubmit
属性。这也是一个建议在你的JavaScript代码中附加事件处理器的好时机。你可以这样想...
对
validate()
的调用是否会神奇地将其false
传递给事件处理程序?bqujaahr2#
为了取消表单提交,需要从
onsubmit
处理程序返回false,通过删除return语句,可以删除该行为。这实际上返回验证的结果
删除return语句
只是调用validate,但不返回其结果。
onsubmit处理程序本身必须返回false以取消表单提交
z4bn682m3#
当验证失败时,你必须返回false给form元素以取消表单提交请求。2如果你返回true给form,它将继续表单提交请求。