我想在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 code:
<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
,NO
和NA
的数量。但是当我调用函数calcYesNO()
时,我无法计算它们......
有人可以帮我解决这个问题吗? 谢谢 基肖尔马布
答案 0 :(得分:1)
jQuery很聪明地检索&lt; select&gt;值;你可以直接打电话给.val()。我还建议使用each()迭代器更明确,因为“this”关键字在某些情况下可能具有意外值。
$("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 +“']”)实际上正在检索选择菜单?