2012-12-04 29 views
1

我用下面的HTML代碼顯示一個表格:它一直顯示的NaN

<form id="Marks" action="/u0877654/Mobile/individualmarks.php" method="post"> 

<table border='1' id='markstbl'> 
<thead> 
<tr> 
<th class='questionth'>Question No.</th> 
<th class='answermarksth'>Marks per Answer</th> 
<th class='noofmarksth'>Marks Remaining</th> 
</tr> 
</thead> 
<tbody> 

<tr class="questiontd"> 
<td class="questionnumtd q<?php echo$questionId?>_qnum" name="numQuestion" rowspan="1">1 <input type="hidden" name="q1_ans_org" class="q1_ans_org" value="5"><input type="hidden" name="q1_ans" class="q1_ans" value="5"></td> 
<td class="answermarkstd"> 
<input class="individualMarks q1_mark" q_group="1" name="answerMarks[]" class="individualtext" type="text" onkeypress="return isNumberKey(event)" maxlength="3" /> 
</td> 
<td class="noofmarkstd q1_ans_text" q_group="1" rowspan="1"><strong>5</strong></td> 
</tr> 

<tr class="questiontd"> 
<td class="questionnumtd q<?php echo$questionId?>_qnum" 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" value="5"></td> 
<td class="answermarkstd"> 
<input class="individualMarks q2_mark" q_group="1" name="answerMarks[]" class="individualtext" type="text" onkeypress="return isNumberKey(event)" maxlength="3" /> 
</td> 
<td class="noofmarkstd q2_ans_text" q_group="1" rowspan="1"><strong>5</strong></td> 
</tr> 
</tbody> 
</table> 

<p><input id="submitBtn" name="submitMarks" type="submit" value="Submit Marks" /></p> 

</form> 

下面是什麼表如下所示:

Question No.  Marks Per Answer   Marks Remaining 
    1   (value=5 text input)   0 
    2   (blank text input)   5 

現在我已經創建驗證爲表以上使用jquery。如果一個行包含除了任意數目0​​(更高或更低),那麼它將顯示一個警告,指出:

高於0:

You have errors on Question Number: 
Your Total Marks Remaining does not equal 0 

• You Have NaN Marks Remaining 

小於0:

You have errors on Question Number: 
Your Total Marks Remaining does not equal 0 

• You Need To Remove NaN Marks 

另一個驗證是,如果用戶在「Marks Per Answer」欄中留下了文本輸入空白,那麼它應該在下面顯示此消息:

You have errors on Question Number: 

• You have not entered in a value for all the Indivdiaul Marks textbox 

我有兩個問題,雖然你可以看到。首先它不顯示包含錯誤的問題編號,它應顯示包含錯誤的第一個問題的問題編號。

另一個問題是它一直顯示NaN。它應該顯示需要刪除多少個標記才能將其設置爲0或將其添加爲0.

上述兩個問題如何解決?

這是我的jQuery代碼:

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"; 
     } else 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

您沒有名爲q1_mark的類。這是q1_mark_0。修復'marks'的定義,並使用javascript控制檯進行調試 – Jeff

+0

@Jeff我將類更改爲q1_mark等,但仍然無法正常工作。讓我更新我的代碼給我5分鐘 – user1861818

+0

@Jeff好了我更新了代碼,以便更新html,jquery並顯示驗證函數是如何激活的。你能否請你看看我是否正確激活了驗證功能。謝謝 – user1861818

回答

1

你比較字符串時,你做$("[class*=q" + i + "_mark]").text() < '0',所以嘗試=(不等於)運算符相對於<(小於)。例如:

$("[class*='q'").each(function (i) { 
      var marks = parseInt($("[class*=q" + i + "_mark]").text()); 
      _qid = $(".q" + i + "_ans_org").text(); 
      _msg = "You have errors on Question Number: " + _qid + "\n"; 


      if (!this.value) { 
       alertValidation += "\n\u2022 You have not entered in a value for all the Indivdiaul Marks textbox\n"; 
      } 

      if ($("[class*=q" + i + "_mark]").text() != '0') { 
       alertValidation = "Your Total Marks Remaining does not equal 0 \n\n\u2022 You Need To Remove " + Math.abs(marks) + " Marks"; 
      } else { 
       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 
      }  
     }); 

否則使用您的變量:

$("[class*='q'").each(function (i) { 
      var marks = parseInt($("[class*=q" + i + "_mark]").text()); 
      _qid = $(".q" + i + "_ans_org").text(); 
      _msg = "You have errors on Question Number: " + _qid + "\n"; 


      if (!this.value) { 
       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 
      }  
     }); 
+0

我會在這個 – user1861818

+0

回覆你好,你解決了NaN問題,它仍然沒有顯示警告號碼 – user1861818

+0

順便說一句我添加了這個變量var txtinput = parseInt($(「[class * = q「+ i +」_mark]「)。val()); '。我想檢查「Marks Per Answer」欄下的空白文本輸入。但是這個代碼'if(txtinput ==''){'似乎沒有檢查它,我該如何檢查一個空的文本輸入值? – user1861818

1

您需要使用.VAL()來檢索輸入值:

_qid = $(".q" + i + "_ans_org").val(); 
_msg = "You have errors on Question Number: " + _qid + "\n"; 

編輯:什麼選擇你正在用嗎?類選擇器僅以點爲前綴:

var marks = parseInt($(".q" + i + "_ans_text").text()); 
+0

但是,如果你仔細看html,問題編號和MArks剩餘不在輸入。 – user1861818

+0

這是一個'' – Hank

+0

試試我編輯過的選擇器到我的回答mark變量 – Hank