2013-10-29 39 views
0

我使用.ajax发送数据到我的数据库。我有两个领域。我想检查是否有空,如果是,则显示错误。第一个如果工作正常。该消息显示,但其他如果不显示。可能是我的问题?我不太熟悉JavaScript和iQuery。jQuery,否则如果不工作

$.ajax({ 
    type: "POST", 
    url: "submit.php", 
    data: data, 
    cache: false, 
    beforeSend: function() { 
     if (!$.trim($("#cat").val())) { 
      $(".fb-error").css("display", "block"); 
      $(".fb-error").html("<p>the cat field is empty</p>"); 
      xhr.abort(); 
     } 

     else if (!$.trim($("#box").val())) { 
      $(".fb-error").css("display", "block"); 
      $(".fb-error").html("<p>the box field is empty</p>"); 
      xhr.abort(); 
     } 
    }, 
    success: function(html){ 
     $('textarea#box').val(''); 
     $("#box-wrap").prepend(html); 
    } 
}); 
+0

删除之间的空间{和否则,如果? –

+2

如果你想在同一时间要显示的两条消息,你不应该使用*'else' *'if',并且你应该把消息附加到元素而不是覆盖它们。 –

+2

@Mark,从何时起Javascript中的空白显着? –

回答

4

如果您想检查两个条件,则不能使用else

var error = ''; 

if (!$.trim($("#cat").val())) { 
     error = "<p>the cat field is empty</p>"; 
} 

if (!$.trim($("#box").val())) { 
     error += "<p>the box field is empty</p>"; 
} 

if (error) { 
     $(".fb-error").html(error); 
     $(".fb-error").css("display", "block"); 
     xhr.abort(); 
} 

在第二if你必须要追加新的HTML,以防止覆盖已经增加的消息。

+0

我会亲自从'html()'切换到'$(“.fb-error”)。append(“

MESSAGE

”);'对于每个验证字段 – azz

+0

(或者您刚编辑的作品,也) – azz

+0

谢谢!我非常喜欢这种方法。 – gregor

2

对每个条件使用单独的if语句;如果第一个if失败,则仅运行else if。使用变量来累积消息。

beforeSend: function() { 
    var msg = ''; 
    if (!$.trim($("#cat").val())) { 
     $(".fb-error").css("display", "block"); 
     msg = "<p>the cat field is empty</p>"; 
     xhr.abort(); 
    } 
    if (!$.trim($("#box").val())) { 
     $(".fb-error").css("display", "block"); 
     msg += "<p>the box field is empty</p>"; 
     xhr.abort(); 
    } 
    $(".fb-error").html(msg); 
}, 
-2

调试你可以切换#box和#cat吗?

您正在使用一个else,所以如果#cat为空,您将看不到消息“框字段为空”。它只会在#cat不为空时显示此消息,并且#box为。

将#box更改为您知道不存在(且不能存在)的内容。也许这是有价值的。

您可以将#cat和#box的值输出到控制台以确保它们为空。 (“$。trim($(”#cat“)。val()=”+ $。trim($(“#cat”)。val()); console.log(“ 。$ .trim($( “#盒”)VAL()= “+ $修剪($(” #盒“)VAL());

+1

我无法弄清楚你告诉他如何修复代码。 – Barmar

1

合并:

var error = false; 
if (!$.trim($("#cat").val())) { 
     $(".fb-error").append("<p>the cat field is empty</p>"); 
     error = true; 
} 

if (!$.trim($("#box").val())) { 
     $(".fb-error").append("<p>the box field is empty</p>"); 
     error = true; 
} 

if (error) { 
     xhr.abort(); 
     $(".fb-error").css("display", "block"); 
} 
2

I” d将误差在一个阵列,并显示出来,如果它不是空

var errors = []; 
if (!$.trim($("#cat").val())) { 
    errors.push("<p>the cat field is empty</p>"); 
} 

if (!$.trim($("#box").val())) { 
    errors.push("<p>the box field is empty</p>"); 
} 

if(errors.length){ 
    $(".fb-error").css("display", "block").html(errors.join('')); 
    xhr.abort(); 
}