2012-12-13 65 views
1

http://jsfiddle.net/7sARw/17/jQuery驗證不相關的HTML

以上工作是我的應用程序的的jsfiddle。我很抱歉,有很多代碼在小提琴中,但代碼是需要讓應用程序工作,我真的試圖削減很多代碼。

但請按照以下步驟使用的jsfiddle:

  1. 當您打開小提琴,點擊「打開網格」鏈接,選擇「真或假」的選項。您會看到「True」和「False」按鈕以及狀態爲1的文本輸入。如果您單擊「添加問題」按鈕,將出現一條提示,聲明您已選擇的答案少於所需數量。這是正確的,因爲文本輸入說明你需要1答案的數量,但你沒有選擇答案。所以選擇「True」或「False」,然後點擊「添加問題」按鈕。

  2. 您會看到它在您輸入的表格中追加了一行。現在在行內關閉選定的按鈕,以使「True」或「False」按鈕都不打開。現在在應用程序的底部點擊「提交詳細信息」按鈕。你意識到沒有警報出現,說明你選擇了更少的答案。

這是我遇到的問題,當我點擊「提交詳細信息」按鈕時沒有出現警報,說明您已經選擇了較少的答案,這是怎麼回事?我知道提交按鈕將顯示其他驗證消息,所以在我如何調用函數時沒有任何問題,它位於validation()函數內,我正在驗證在出現問題時所選答案的數量。

下面是其在所述的jsfiddle底部的驗證的代碼:

function validation() { 

    var marks = parseInt($("#total-weight").text()); 
    var _qid = ""; 
    var _msg = ""; 

    var maxQuestions = 5; 
    var questionsAdded = $('tr.optionAndAnswer').length; 

    var alertValidation = ""; 
    // Note, this is just so it's declared... 
    $("tr.optionAndAnswer").each(function() { 


     _qid = $("td.qid", this).text(); 
     _msg = "You have errors on Question Number: " + _qid + "\n"; 

     $(".numberAnswerTxtRow", this).each(function() { 


      var currenttotal = $(this).closest('.optionAndAnswer').find('.answerBtnsOn').length; 

      if (currenttotal < $(this).val()) { 
       alertValidation += "\n\u2022 You have selected less answers than the required amount\n"; 
      } 

      if (alertValidation != "") { 
       return false; //Stop the each loop 
      } 

     }); 



     if (alertValidation != "") { 
      return false; 
     } 
    }); 



    if (alertValidation != "") { 
     alert(_msg + alertValidation); 
     return false; 
    } 

    return true; 
} 
+0

在jsfiddle中的「驗證()」被調用?據我可以告訴該功能沒有運行。 – Emily

回答

2

這似乎工作:http://jsfiddle.net/7sARw/20/

看來你沒有安裝一個單擊處理程序調用validation()。我在你的$(document).ready功能添加以下代碼:

$('#QandA').submit(function (evt) { 
    return validation(); 
}); 

這是說,提交表單,如果validation()返回true,否則請不要提交。現在,如果您添加問題,請將「答案數量」字段更改爲2,然後提交,則會顯示警報。

+0

我已經有一個提交,但沒有包括在小提琴中。但我明白了這個問題,並且讓我說你的答案對我有幫助,因爲這讓我意識到問題不是提交,而是我選擇答案的方式。所以出於這個原因,我給了你賞金,讚賞和最好的答案。謝謝親愛的:) – user1881090

1

類型不匹配誤差:

<table id="optionAndAnswer" class="optionAndAnswer"> 

$("tr.optionAndAnswer").each(function() { 

<table>idoptionAndAnswerclassoptionAndAnswer,OKE細不是一個錯誤,但你jQuery選擇器正在選擇一個<tr>classoptionAndAnswer,這一個不存在於你HTML

+0

對不起,我試圖爲附加行的代碼創建一個匹配的html。我必須弄錯hmtl。我知道tr optionAndAnswer沒有問題,因爲每個追加行都包含這個類。我已經更新了問題以包含代碼添加行的代碼。請看這個代碼。這可能會提供正確的答案 – user1881090