2011-12-23 12 views
1

アプリケーションの最上部で、ユーザーはオプションと回答を選択して、オプションと回答を新しいテーブル行に保存できます。この状況で.on()関数を使用する方法

どのように私は上記のオプションと回答機能と同じ機能を実行するために各行を持つことができますので、ユーザーが特定の行のオプションや回答を変更する際に気を変えた場合、それは行内にある。

私のコードはJSFiddleです。フィドルでオプションと回答の機能を使用できるようにするには、以下の手順に従ってください。

  1. グリッドを開き、オプション "3"を選択します。テキストボックスに "3"が表示され、下のボタンA〜Cが表示されます。

  2. Number of Answersテキストボックスに2と入力します。これは、ボタンAからCの間で2つのボタンしか選択できないことを意味しています。

  3. ボタンAとBを選択して、別のボタンを選択しようとすると、限界を超えていることを示す警告が表示されます。

  4. [質問を追加]ボタンをクリックすると、詳細を示す行が作成されます。

各列のすべての機能をオプションと回答機能の機能と一致したいと思っています。私は.on()関数を使用する必要があることを知っていますが、これをどのように各行に含めることができますか?

答えて

0

私が正しく理解していれば、あなたがテーブルの行に関してステップ「3」の「警告」を再利用する方法を知りたい...

その後、あなたは正しいです - 「には、」あなたが欲しい機能です。 (この関数はlive functionを非推奨にします) 各イベントのセレクタを再評価するのは何ですか。代わりに、あなたがこのページ次

$(".answerBtns").on("click",btnclick); 

これが効果的にすべての「.answerBtns」に「btnclick」メソッドを結合する要素を記述する必要があります

<input class="answerBtns" name="answerAName" id="answerA" type="button" value="A" onclick="btnclick(this);"/> 

に「onclickの」イベントを割り当てる

セレクタ$( ".resBtns")が各クリックで再評価されるため、(現在および将来の)

すべてのシナリオをサポートするために、「btnclick」関数を一般化するだけです。つまり、それが行にあるのかフォームにあるのかを識別し、適切に行動しなければならないということです。

例えば

(未確認のではなく、擬似コード):

<script> 
    function btnclick(){ 
     if ($(this).closest("#qandatbl").length > 0) { // we are in the table because we are wrapped in a table 
      var myRow = $(this).closest("tr"); 
      var ourLimit = myRow.find(".numberAnswerTxtRow").val(); 
      if (myRow.find(".answerBtnsOn").length > ourLimit){ 
       alert("...");... 
      } 
     }else{...} // we are not in a table.. lets do what we always did. 
    } 
</script> 

あなたが見ることができるように、彼らは私にクリック原点に対して同じ機能だけを与えるので、私はclosestfindを使用。

私が何かを見逃したら、私はそれを追加します。

関連する問題