Почему я должен возвращать возврат моей функции при вызове OnSubmit? - PullRequest
1 голос
/ 08 декабря 2011

У меня есть этот 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(), если я продолжу в том же духе, моя форма выдаст мне предупреждение, если поля не заполнены, хорошо, это то, что я хочу.

У меня вопрос: я пытался убрать возврат из этого , и если я это сделал, я получаю предупреждение, но когда я нажимаю ок, сервлет продолжает выполнять свои обычные действия вместо того, чтобы оставаться на той же странице. ..

Почему это?

Кстати, я новичок в Javascript, чтобы объяснить это подробно, пожалуйста.

Ответы [ 3 ]

4 голосов
/ 08 декабря 2011

Когда вы return false из своей функции validate(), это значение false фактически не передается обработчику событий.Вам нужно return результат функции прямо к атрибуту onsubmit.Это также подходящее время, чтобы предложить подключить обработчики событий в самом коде JavaScript.

Думайте об этом примерно так ...

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

Это вызвало бы validate() передать его false обработчику события по волшебству? Неа!

1 голос
/ 08 декабря 2011

Чтобы отменить отправку формы, необходимо вернуть false из обработчика onsubmit. Удаляя оператор return, вы удаляете это поведение.

onsubmit="return validate();"

Это на самом деле возвращает результат проверки

Удаление оператора возврата

onsubmit="validate();"

просто вызывает подтверждение, но не возвращает его результат.

Обработчик onsubmit должен сам вернуть false, чтобы отменить отправку формы

0 голосов
/ 08 декабря 2011

когда проверка не пройдена, вы должны вернуть false в элемент формы, чтобы отменить запрос на отправку формы.Если вы вернете true в форму, она продолжится с запросом на отправку формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...