1

Velocity Template Language (VTL) で簡単なコードを書きたいと思っています。私はドロップダウンのグループを持っています。すべてのドロップダウンを繰り返し処理し、各ドロップダウンの値を取得し、各カテゴリの下で選択された値の数を数えます。コードを以下に示します。

#macro( macroYesNoSelect $fieldId $section )
<select  name='${fieldId}' id='${fieldId}' section='${section}' ischanged="">
    <option value="Yes" 
        #if ($Form.getFieldValue("${fieldId}") == "Yes") 
            selected 
        #end 
    score="1">Yes</option>
    <option value="No"  
        #if ($Form.getFieldValue("${fieldId}") == "No") 
            selected 
        #end
    score="0">No</option>
    <option value="N/A" 
        #if ($Form.getFieldValue("${fieldId}") == "N/A") 
            selected 
        #end
    score="0">N/A</option>
</select>
#end

Javascript:

<script>
calcYesNO("Question");

function calcYesNO(sectionName){
        var scoreSum=0;
        var optionYes=0;
        var optionNo=0;
        var optionNA=0;
        $("select[section='"+ sectionName +"']").each(function(){

         if($(this).find("option:selected").attr('value') == 'Yes')
         {
          optionYes=optionYes+1;
         }
         else if($(this).find("option:selected").attr('value') == 'No')
         {
          optionNo=optionNo+1;
         }
         else
         {
          optionNA=optionNA+1;
         }      
        } 
        scoreSum = optionYes;
        return scoreSum;
        }

</script>

HTML コード:

<table>
<tr>

        <td>Question1 ?</td>
        <td>
            #macroYesNoSelect ( "id1" "Questions" )
        </td>

    </tr>
    <tr>

        <td> Question2 ?</td>
        <td>
            #macroYesNoSelect ( "id2" "Questions" )
        </td>
    </tr>
    <tr>

        <td> Question3 ?</td>
        <td>
            #macroYesNoSelect ( "id3" "Questions" )
        </td>
    </tr>
</table>

の数を選択したいのですがYES、私の選択に従って。しかし、関数を呼び出すと、それらを計算できません...NONAcalcYesNO()

誰かがこれを解決するのを手伝ってくれますか? ありがとうキショア

4

1 に答える 1

1

jQuery は <select> 値を取得するのが賢明です。.val() を直接呼び出すことができます。また、「this」キーワードは特定の状況で予期しない値を持つ可能性があるため、each() イテレータをより明示的に使用することをお勧めします。

$("select[section='"+ sectionName +"']").each(function(n, element){

     if($(element).val() == 'Yes')
     {
      optionYes=optionYes+1;
     }
     else if($(element).val() == 'No')
     {
      optionNo=optionNo+1;
     }
     else
     {
      optionNA=optionNA+1;
     }      
    }

とはいえ、既存のコードは機能するはずです。$("select[section='"+ sectionName +"']") が実際に選択メニューを取得していることを確認しましたか?

于 2011-02-21T19:21:42.367 に答える