2012-04-01 55 views
0

我对jquery相当陌生,我正在使用jsp和struts作为应用程序的一部分我有一个调查表单,其中包含多个类别,每个类别都有不同的问题,并且每个问题都有一些可能的答案,可以从单选按钮中选择。 我希望要求用户在提交表单之前为每个类别中的每个问题选择一个答案,如果他们没有提交错误,则提供错误。检查在JQuery和JSP中选择的所有单选按钮,Struts

<s:iterator value="quelists"> 
<tr class="radioList"> 
<td> 
<s:property value="surveyQuestion"/><span id="msg_selectError"/> 
</td> 

<td > 
<s:iterator value="answerslists" status="status"> 
<s:radio value="selectedAnswers[%{#count}]" 
      name="selectedAnswers[%{#count}]" 
      list="#{id:answer}" required="true" theme="simple"/> 
</s:iterator> 
</td> 

<s:set var="count" value="#count+1"/>  
</tr> 
</s:iterator> 
+1

请放下相应的HTML。 – 2012-04-02 00:05:29

+0

@Mbayader你面临的问题是什么?记住最后的S2标签与HTML标签相同,所以对HTML标签适用的东西同样适用于S2标签 – 2012-04-02 02:13:19

+0

有人刚刚问了一个问题,我刚刚提供了一个应用于您应该实现的服务器端验证的答案(客户端可以发送任何东西):http://stackoverflow.com/questions/9969024/struts2-validation-for-an-array与完成...显示由此产生的HTML到jQuery人,并删除所有对struts2的引用,因为在这一点它只是一个普通的网页。 – Quaternion 2012-04-02 02:18:03

回答

0

我刚学。它的工作:http://jsfiddle.net/WDfXq/2/

function isCheck() { 
    var isOk = true; 
    $('.radioList').each(function(){ 
     var countChecked = $(this).find(':checked').length; 

     if(countChecked!=1) { 
      $(this).css('color', 'red'); 
      isOk = false; 
     } else { 
      $(this).css('color', 'black'); 
     } 
    }); 
    return isOk; 
} 
+0

我正在编辑它。它现在工作 – gooogenot 2012-04-02 11:55:10

+0

非常感谢我没有使用它,但启发我的工作解决方案 – Mbayader 2012-04-03 13:31:59

0

我设法做通了以下内容:

Struts的部分

<tbody> 
<s:iterator value="quelists"> 
<tr class="radioList"> 
<td align="right" dir="rtl"><s:property value="surveyQuestion"/></td> 
<td > 
<div class="controlsetRadio"> 
<s:iterator value="answerslists" status="status"> 
<s:radio id="selectedAnswers[%{#count},%{#status.count}]" 
     value="selectedAnswers[%{#count}]" 
     name="selectedAnswers[%{#count}]" 
     list="#{id:answer}" 
     required="true" theme="simple"/> 
</s:iterator> 
</div> 
</td> 
<s:set var="count" value="#count+1"/> 
</tr> 
</s:iterator> 
</tbody> 

JQuery的部分

<script type="text/javascript"> 

    $(document).ready(function(){ 

     $("form").submit(function(){ 
     var validateSurvey = Checkform();   
    if (validateSurvey){ 
     return true; 
     } 
    else 
    { 
    alert("Please Answer All Questions!"); 
    return false; 
    } 
    }); 

    }); 


    function Checkform() { 
    var result = true; 
    var categories= $('.radioList').find('.controlsetRadio'); 
    $(categories).each(function() { 
    var checked = $(this).find('input:radio:checked'); 
    var count = 0; 
    if (checked.length !=1) { 
      result = false; 
       $(this).addClass('error');  
     }else{ 
     $(this).removeClass('error'); 
     } 
    }); 


    return result; 
} 

</script>