アラート内のメッセージを連結して、エラーが発生した最初の質問のすべてのエラーメッセージが表示されるようにします。たとえば、3つの質問があり、質問1と質問3にエラーがある場合、送信ボタンをクリックすると、検証アラートに次のようなアラートの例が表示されます。
質問番号にエラーがあります:1
•すべての個別マークテキストボックスに値を入力していません
•すべての個別マークテキストボックスに値を入力していません残りの合計マークが0に等しくありません
質問1のエラーを解決した後で初めて、ページを再度送信すると、以下の例として質問番号3のアラートが表示されます。
質問番号にエラーがあります:3
•すべての個別マークテキストボックスに値を入力していません
•すべての個別マークテキストボックスに値を入力していません残りの合計マークが0に等しくありません
私が抱えている問題は、一度に1つの質問番号しか表示されていないことですが、質問1と3のすべてのエラーが表示されているため、次のようになります。
質問番号にエラーがあります:1
•すべての個別マークテキストボックスに値を入力していません
•すべての個別マークテキストボックスに値を入力していません残りの合計マークが0に等しくありません
•すべての個別マークテキストボックスに値を入力していません
•すべての個別マークテキストボックスに値を入力していません残りの合計マークが0に等しくありません
私の質問は、アラートをどのように機能させて、私が望む方法と一致させることができるかということです。
以下はjqueryコードです。
function validation() {
    var alertValidation = "";
    var _qid = "";
    var _msg = "";
    $("input[data-type='qmark']").each(function(i) {  
        var questions = $(this).attr("data-qnum");
        var marks = parseInt($("[class*=q" + i + "_ans_text]").text()); 
        var txtinput = $(this).val(); 
        _qid = questions;
        _msg = "You have errors on Question Number: " + _qid + "\n";
        if (txtinput == '') {
            alertValidation += "\n\u2022 You have not entered in a value in all the Indivdiaul Marks textbox\n";
        }
        if(marks < '0') {
            alertValidation += "Your Total Marks Remaining does not equal 0 \n\n\u2022 You Need To Remove " + Math.abs(marks) +  " Marks";   
        }
        if(marks > '0') {
            alertValidation += "Your Total Marks Remaining does not equal 0 \n\n\u2022 You Have " + marks +  " Marks Remaining";   
        }
    });
    //comment
    if (alertValidation != "") {
        alert(_msg + alertValidation);
        return false;
    }
    return true;
}
上記のコード//commentに、このコードを含めると、次のようになります。
if (alertValidation != "") {
    return false; //Stop the each loop 
}
次に、質問ごとにアラートごとに1つのメッセージのみを表示します。
警告を除く:
質問番号にエラーがあります:1
•すべての個別マークテキストボックスに値を入力していません
•すべての個別マークテキストボックスに値を入力していません残りの合計マークが0に等しくありません
警告します:
質問番号にエラーがあります:1
•すべての個別マークテキストボックスに値を入力していません
   UPDATE:
以下はコードの更新です:
関数validation(){
    var alertValidation = "";
    var _qid = "";
    $("input[data-type='qmark']").each(function(i) {  
    var questions = $(this).attr("data-qnum");
    var marks = parseInt($("[class*=q" + i + "_ans_text]").text()); 
    var txtinput = $(this).val(); 
    _qid = questions;
    alertValidation += "\nYou have errors on Question Number: " + _qid + "\n";
if (txtinput == '') {
    alertValidation += "\n\u2022 You have not entered in a value in all the Indivdiaul Marks textbox\n";
}    
if(marks < '0')
{
 alertValidation += "Your Total Marks Remaining does not equal 0 \n\n\u2022 You Need To Remove " + Math.abs(marks) +  " Marks";   
}
if(marks > '0')
{
 alertValidation += "Your Total Marks Remaining does not equal 0 \n\n\u2022 You Have " + marks +  " Marks Remaining";   
}
        });
    if (alertValidation != "") {
       alert(alertValidation.substr(1));
        return false;
    }
    return true;
}
しかし、問題は、以下が警告するものであるということです。
•質問番号にエラーがあります:1
•すべての個別マークテキストボックスに値を入力していません質問番号にエラーがあります:1
•すべての個別マークテキストボックスに値を入力していません残りの合計マークが0に等しくありません
•残り5つのマークがあります質問番号にエラーがあります:2
•質問番号にエラーがあります:3
•すべての個別マークテキストボックスに値を入力していません残りの合計マークが0に等しくありません
•残り5つのマークがあります質問番号にエラーがあります:3
•すべての個別マークテキストボックスに値を入力していません質問番号にエラーがあります:3
•すべての個別マークテキストボックスに値を入力していません