您好我正在尝试检查表单中的标题是否已存在于数据库中。
我的代码执行$ .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();
}
答案 0 :(得分:1)
$.post
请求是异步发生的,因此在服务器发回其响应(这不会按时发生)之前,没有阻止按钮的默认操作 - 或者说,执行流经过该点并且处理程序的其余部分被执行,导致表单提交。
答案 1 :(得分:0)
return false;
相当于BOTH防止冒泡并防止默认。
也不应该进入AJAX回调 - 该函数在点击回调之外被调用。