jquery e.preventdefault не работает внутри $ .post - PullRequest
1 голос
/ 01 августа 2011

Привет, я пытаюсь проверить, существует ли заголовок в форме в базе данных.

Мой код делает $ .post и возвращает данные, но не останавливается с помощью e.preventDefault (); или по возвращении ложно. e.preventDefault (); работает, когда заголовок пуст.

    $(document).ready(function() {
        $('input[id$=btnSubmit]').click(function(e) {
                var title = $("#title").val();
                if (!title) {
                    alert('Please Add a title');
                    return false ;
                    e.preventDefault();
                } else {
                     $.post("http://xendesktop.nl/uploader/checktitle.php",{ title:$(this).val() } ,function(data) {
                        if(data=='exists') {
                            alert('This title already exists');
                            e.preventDefault();
                        }
                     });
                }
                var description = $("#description").val();
                if (!description) {
                    alert('Please Add a description');
                    return false ;
                    e.preventDefault();
                }

Ответы [ 2 ]

1 голос
/ 01 августа 2011

Запрос $.post происходит асинхронно, поэтому действие кнопки по умолчанию не было предотвращено до тех пор, пока сервер не отправит обратно свой ответ (что просто не произойдет вовремя), или, скорее, выполнение пройдет через эту точку, а остальныеобработчик выполняется, в результате чего форма для отправки.

0 голосов
/ 01 августа 2011

return false; эквивалентно ОБА, предотвращающей образование пузырей и предотвращающей дефолт.

Ни один из них не должен обращаться к обратному вызову AJAX - эта функция вызывается вне обратного вызова click.

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