jquery e.preventdefault无法在$ .post内部工作

时间:2011-08-01 01:40:49

标签: jquery ajax validation

您好我正在尝试检查表单中的标题是否已存在于数据库中。

我的代码执行$ .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 个答案:

答案 0 :(得分:1)

$.post请求是异步发生的,因此在服务器发回其响应(这不会按时发生)之前,没有阻止按钮的默认操作 - 或者说,执行流经过该点并且处理程序的其余部分被执行,导致表单提交。

答案 1 :(得分:0)

return false;相当于BOTH防止冒泡并防止默认。

也不应该进入AJAX回调 - 该函数在点击回调之外被调用。