次の HTML コードを使用してテーブルを表示しています。
<table border='1' id='markstbl'>
<thead>
<tr>
<th class='questionth'>Question No.</th>
<th class='answermarksth'>Marks per Answer</th>
</tr>
</thead>
<tbody>
<tr class="questiontd">
<td class="questionnumtd" name="numQuestion" rowspan="2">1 <input type="hidden" name="q1_ans_org" class="q1_ans_org" value="5"><input type="hidden" name="q1_ans" class="q1_ans"></td>
<td class="answermarkstd">
<input class="individualMarks q1_mark_0" q_group="1" name="answerMarks[]" id="individualtext" type="text" />
</td>
</tr>
<tr class="questiontd">
<td class="answermarkstd">
<input class="individualMarks q1_mark_0" q_group="1" name="answerMarks[]" id="individualtext" type="text" />
</td>
</tr>
<tr class="questiontd">
<td class="questionnumtd" name="numQuestion" rowspan="1">2 <input type="hidden" name="q2_ans_org" class="q2_ans_org" value="5"><input type="hidden" name="q2_ans" class="q2_ans"></td>
<td class="answermarkstd">
<input class="individualMarks q2_mark_0" q_group="1" name="answerMarks[]" id="individualtext" type="text" />
</td>
</tr>
</tbody>
</table>
以下は、テーブルの外観です。
Question No. Marks Per Answer
1 (blank text input)
(blank text input)
2 (blank text input)
ご覧のとおり、質問 1 には 2 つのテキスト入力が含まれ、質問 2 には 1 つのテキスト入力が含まれています。
以下のコードでやりたいことは、空のテキスト入力を検証することです。
function validation() {
var alertValidation = "";
var _qid = "";
var _msg = "";
$("[class*='q']").each(function(i) {
var questions = parseInt($("[class*=q" + i + "_qnum]").text());
var marks = parseInt($("[class*=q" + i + "_ans_text]").text());
var txtinput = $("[class*=q" + i + "_mark]").val();
_qid = questions;
_msg = "You have errors on Question Number: " + _qid + "\n";
if (txtinput == '' || txtinput == null) {
alertValidation += "\n\u2022 You have not entered in a value for all the Indivdiaul Marks textbox\n";
}
if (alertValidation != "") {
return false; //Stop the each loop
}
});
if (alertValidation != "") {
alert(_msg + alertValidation);
return false;
}
return true;
}
問題は、アラートに質問番号_qid
が NaN として表示されず、テキスト入力が空白でなくても、すべての入力に値が含まれていないことを示すアラートが表示されることです。
私の質問は、質問番号を表示する方法と、空のテキスト入力が正しいかどうかを適切に確認する方法です。テキスト入力が空の場合、正しい質問番号でアラートが表示され、すべてのテキスト入力に値が含まれている場合は、検証が表示されませんか?
空のテキスト入力をチェックするifステートメントのすぐ下に配置され_qid
た関数に別の検証チェック用に以下のコードを含めると、うまくいくと言いたいです。validation()
if(marks < '0')
{
alertValidation = "Your Total Marks Remaining does not equal 0 \n\n\u2022 You Need To Remove " + Math.abs(marks) + " Marks";
}
else if(marks > '0')
{
alertValidation = "Your Total Marks Remaining does not equal 0 \n\n\u2022 You Have " + marks + " Marks Remaining";
}
上記の検証でアラートが表示されると、アラートに質問番号が表示されます。空のテキスト入力を検証しても表示されないのですか? 質問内に複数のテキスト入力がある可能性があるため、空のテキスト入力のコードに別の foreach() ループを含める必要があるかもしれませんか?
完全なValidation()
コードは次のようになります。
function validation() {
var alertValidation = "";
var _qid = "";
var _msg = "";
$("[class*='q']").each(function(i) {
var questions = parseInt($("[class*=q" + i + "_qnum]").text());
var marks = parseInt($("[class*=q" + i + "_ans_text]").text());
var txtinput = $("[class*=q" + i + "_mark]").val();
_qid = questions;
_msg = "You have errors on Question Number: " + _qid + "\n";
if (txtinput == '' || txtinput == null) {
alertValidation += "\n\u2022 You have not entered in a value for 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";
}
else if(marks > '0')
{
alertValidation = "Your Total Marks Remaining does not equal 0 \n\n\u2022 You Have " + marks + " Marks Remaining";
}
if (alertValidation != "") {
return false; //Stop the each loop
}
});
if (alertValidation != "") {
alert(_msg + alertValidation);
return false;
}
return true;
}
以下は、検証メッセージの例です。
マーク 0 より高い検証:
You have errors on Question Number: 1
Your Total Marks Remaining does not equal 0
• You Have NaN Marks Remaining
マーク 0 未満の検証:
You have errors on Question Number: 2
Your Total Marks Remaining does not equal 0
• You Need To Remove NaN Marks
空のテキスト入力の検証:
You have errors on Question Number: NaN
• You have not entered in a value for all the Indivdiaul Marks textbox
上記のアラートを見るとわかるように、質問番号が表示されないのはアラートだけです
ありがとう