2013-01-15 31 views
0

我遇到了警報中顯示的問題號的問題。它不顯示問題編號,而是顯示問題編號作爲問題編號。因此,在警報驗證它規定,例如:如何在警報中顯示正確的號碼

You have errors on question number: 115 

當應該說You have errors on question number: 3例如

下面這段代碼顯示問題ID:value="<?php echo$questionId?>"

此代碼顯示問題編號:echo$searchQuestionNo[array_search($questionId, $searchQuestionId)]

但是當我試圖這樣做時:

<input type='hidden' id='num_groups' name='num_groups' value='<?php echo$searchQuestionNo[array_search($questionId, $searchQuestionId)]`?>'> 

它不顯示jquery alert的問題編號。說實話,發生的事情是驗證不起作用,因爲它沒有出現。然而,如果我保持上面的代碼是什麼東西,其價值是問題ID:

<input type='hidden' id='num_groups' name='num_groups' value='<?php echo$questionId?>'> 

然後,它顯示了questionId在警報和警報的實際工作。

所以我的問題是如何在警報中包含問題編號值,但是也能夠使驗證工作,就像它對問題提問一樣?

下面是主要的代碼,所以你可以看到一切都來自:

PHP:

<? 

     // This will hold the search results 
    $searchQuestionId = array(); 
    $searchQuestionNo = array(); 

    // Fetch the results into an array 

    // get result and assign variables (prefix with db) 
$stmt->bind_result($dbSessionId, $dbSessionName, $dbQuestionId, $dbQuestionNo, $dbQuestionContent, $dbAnswer, $dbAnswerId, $dbQuestionMarks, $dbOptionId, $dbOptionType); 


     $searchQuestionId[] = $dbQuestionId; 
     $searchQuestionNo[] = $dbQuestionNo; 
     } 

?> 



</head> 

<body> 


<form id="PenaltyMarks" action="<?php echo htmlentities($action); ?>" method="post"> 


<?php 

$ques_ans = array(); //to store incorrect answers against ques no. 

$q_occ_count = array_count_values($searchQuestionId); 
foreach($searchQuestionId as $key => $questionId) 
{ 
..... 
} 


?> 
<table id='penaltytbl'> 
<thead> 
<tr> 
<th class='questionth'>Question No.</th> 
<th class='questionth'>Question</th> 
</tr> 
</thead> 
<tbody> 
<?php 

foreach($ques_ans as $questionId => $inc_ans) 
{ 


?> 

<tr class="questiontd"> 

<td class="questionnumtd q<?php echo$searchQuestionNo[array_search($questionId, $searchQuestionId)]?>_qnum" rowspan="<?php echo$q_row_span?>"><?php echo$searchQuestionNo[array_search($questionId, $searchQuestionId)]?> 
<input type="hidden" name="numQuestion" value="<?php echo$questionId?>" /> 
    </td> 


<td class="answermarkstd"> 
<input class="individualMarks q<?php echo$questionId?>_mark" q_group="1" name="answerMarks[]" type="text" data-type="qmark" data-qnum="<?php echo$questionId?>" onkeypress="return isNumberKey(event)" maxlength="3" value="0" /> 
</td> 

</tr> 
<?php 
} 

?> 
</tbody> 
</table> 

<p> 
<input type='hidden' id='num_groups' name='num_groups' value='<?php echo$questionId?>'> 
<input id="submitBtn" name="submitPenalty" type="submit" value="Submit Marks" /> 
</p> 

</form> 

的Jquery:

< script type = "text/javascript" > 


    myClickHandler = function (e) { 
     var ng = $('#num_groups').val(); 
     for (var group = 1; group 
      <= ng; group++) { 
     if (!validation(group)) return false; 
     } 

    }); 


    function validation(group) { 
     var msg = []; 

     var nb = 0; // Number of blank values 
     $("input[data-qnum='" + group + "']").each(function() { 
     if ($(this).val() == '') { 
      nb++; 
      return false; 
     } 
     }); 
     if (nb != 0) { 
     msg.push("\u2022 You have not entered in a value in all the Penalty Marks textbox \n"); 
     } 

     if (msg.length > 
      0) { 
     alert("You have errors on Question Number: " + group + "\n\n" + msg.join("\n")); 
     return false; 
     } else { 
     return true; 
     } 
    } 




    < /script> 
+0

請考慮一些建議:HTTP ://stackoverflow.com/a/14305295/285587 **特別是有關刪除問題並再次詢問的部分** –

+2

你可以爲此做一個phpFiddle嗎? – ATOzTOA

回答

0

我認爲,就像你說的,此代碼可以回答問題編號:

echo$searchQuestionNo[array_search($questionId, $searchQuestionId)] 

添加您的問題編號爲屬性q_number在您輸入元素:

<input class="individualMarks q<?php echo$questionId?>_mark" q_number="<?php echo $searchQuestionNo[array_search($questionId, $searchQuestionId)]; ?>" q_group="1" name="answerMarks[]" type="text" data-type="qmark" data-qnum="<?php echo$questionId?>" onkeypress="return isNumberKey(event)" maxlength="3" value="0" /> 

而在你validation功能使用它

function validation(group) { 
    var msg = []; 

    var qNumber = null; 

    var nb = 0; // Number of blank values 
    $("input[data-qnum='" + group + "']").each(function() { 

    //Assign the question number 
    qNumber = $(this).attr('q_number'); 

    if ($(this).val() == '') { 
     nb++; 
     return false; 
    } 
    }); 
    if (nb != 0) { 
    msg.push("\u2022 You have not entered in a value in all the Penalty Marks textbox \n"); 
    } 

    //Use qNumber instead of the group variable 
    if (msg.length > 0) { 
    alert("You have errors on Question Number: " + qNumber + "\n\n" + msg.join("\n")); 
    return false; 
    } else { 
    return true; 
    } 
} 
+0

嗨,它沒有奏效,它正在做同樣的事情。當我嘗試更改代碼以顯示問題編號時,就像在我的嘗試中一樣,並且像您在答案中嘗試的那樣,當我有一個「.individualMarks」空白的文本輸入時,而不是顯示未輸入值的錯誤消息所有的懲罰標記,它通過驗證直接到確認。 – user1914374

+0

嘗試使用控制檯(F12)調試您的代碼,並在您的點擊處理函數中放置一個斷點。 – sdespont

+0

這是第一次嘗試使用f12進行調試,所以請耐心等待,它會突出顯示click處理函數中else語句中的'return false'。在'範圍變量'部分中,它聲明'e:jQuery。事件 組:6 ng:「5」 this:form #PenaltyMarks'我不知道這是否相關 – user1914374

相關問題