アラート内のメッセージを連結して、エラーが発生した最初の質問のすべてのエラーメッセージが表示されるようにします。たとえば、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
•すべての個別マークテキストボックスに値を入力していません