0

.ajax を使用してデータベースにデータを送信しています。私は2つのフィールドを持っています。どちらかが空かどうかを確認し、そうであればエラーを表示したいと思います。最初の if は正常に動作します。そのメッセージは表示されますが、else if は表示されません。私の問題は何ですか?私はjavascriptとqueryにあまり慣れていません。

$.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);
    }
});
4

5 に答える 5

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 を追加する必要があります。

于 2013-10-29T13:54:43.963 に答える
2

エラーを配列に入れて、空でない場合は表示します

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();
}
于 2013-10-29T14:02:52.160 に答える
2

if条件ごとに別々のステートメントを使用してください。else if最初に失敗した場合にのみ実行され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);
},
于 2013-10-29T13:55:31.297 に答える
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" );
}
于 2013-10-29T13:59:10.333 に答える
-2

デバッグするには、#box と #cat を切り替えることができますか?

else を使用しているため、#cat が空の場合、「ボックス フィールドが空です」というメッセージは表示されません。#cat が空ではなく、#box が空である場合にのみ、このメッセージが表示されます。

#box を、存在しない (そして存在できない) ことがわかっているものに変更します。そこに価値があるのか​​もしれません。

#cat と #box の値をコンソールに出力して、それらが空であることを確認できます。

console.log("$.trim($("#cat").val()="+$.trim($("#cat").val()); console.log("$.trim($ ("#box").val()="+$.trim($("#box").val());

于 2013-10-29T13:57:08.760 に答える