1

http://jsfiddle.net/7sARw/17/

上記は私のアプリケーションのjsfiddleです。フィドルにはたくさんのコードが含まれていることをお詫びしますが、アプリを機能させるにはコードが必要であり、実際にコードを大幅に削減しようとしました。

ただし、以下の手順に従ってjsfiddleを使用してください。

  1. フィドルを開くときは、[グリッドを開く]リンクをクリックして、[TrueまたはFalse]オプションを選択します。「True」ボタンと「False」ボタンが表示され、1を示すテキスト入力が表示されます。

  2. [質問を追加]ボタンをクリックすると、必要な数より少ない回答を選択したことを示すアラートが表示されます。これは、テキスト入力1に回答の数が必要であると記載されているが、回答を選択していない場合に当てはまります。したがって、「True」または「False」のいずれかを選択してから、「AddQuestion」ボタンをクリックします。

  3. 入力した内容のテーブルに行が追加されていることがわかります。次に、行内で選択したボタンをオフにして、「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;
} 
4

2 に答える 2

2

これは機能しているようです:http://jsfiddle.net/7sARw/20/

を呼び出すためにクリックハンドラーをアタッチしていなかったようvalidation()です。このコードを$(document).ready関数に追加しました:

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

つまり、trueが返された場合はフォームを送信し、validation()それ以外の場合は送信しないでください。ここで、質問を追加し、[回答数]フィールドを2に変更して送信すると、アラートが表示されます。

于 2012-12-17T00:50:35.030 に答える
1

タイプの不一致エラー:

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

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

<table> idoptionAndAnswerclassoptionAndAnswer、エラーではありませんが、jQueryセレクターがでを選択し<tr>ていclass optionAndAnswerます。これはHTMLに存在しません。

于 2012-12-16T00:46:12.943 に答える