jquery 为什么在调用OnSubmit时必须返回函数的return?

5fjcxozz  于 2023-01-20  发布在  jQuery
关注(0)|答案(3)|浏览(132)

我有这个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来详细解释它请。

dldeef67

dldeef671#

当你从你的函数validate()return false时,那个false值实际上并没有传递给事件处理器。你需要直接将函数的结果returnonsubmit属性。这也是一个建议在你的JavaScript代码中附加事件处理器的好时机。
你可以这样想...

form.addEventListener('submit', function() {
    validate();
}, false);

validate()的调用是否会神奇地将其false传递给事件处理程序?

bqujaahr

bqujaahr2#

为了取消表单提交,需要从onsubmit处理程序返回false,通过删除return语句,可以删除该行为。

onsubmit="return validate();"

这实际上返回验证的结果
删除return语句

onsubmit="validate();"

只是调用validate,但不返回其结果。

onsubmit处理程序本身必须返回false以取消表单提交

z4bn682m

z4bn682m3#

当验证失败时,你必须返回false给form元素以取消表单提交请求。2如果你返回true给form,它将继续表单提交请求。

相关问题