0

可能的解决方案,但无法使其正常工作:

$(function(){
  $('input[name="q10"]').click(function(){
    if ($(this).is(':checked'))
    {
    var flag=0;

    $("input[type='radio']:checked").each(function() {
      if($(this).val()==1 || $(this).val()==2 ){
        $("#disagree").show();
         flag++;
      }
      else if(($(this).val()==3 || $(this).val()==4) && flag==0)
        $("#agree").show();
    });
    }
  });
});

我有一个包含 10 个问题的页面 - 每个问题都有一个响应量表,如下所示:

<div id="rq1" class="row" onmouseover="changeBackgroundColor(this.id)" onmouseout="changeBackgroundColor2(this.id)">
<div class="col1">1.</div>
<div class="col2a">Question text</div>
<div class='colans'>
      <input  name='q1' value='4' id='q1a4' type='radio' onclick='mand();' />
</div>
<div class='colans'>
      <input  name='q1' value='3' id='q1a3' type='radio' onclick='mand();' />
</div>
<div class='colans'>
      <input  name='q1' value='2' id='q1a2' type='radio' onclick='mand();' />
</div>
<div class='colans'>
      <input  name='q1' value='1' id='q1a1' type='radio' onclick='mand();' />
</div>
<div class='colans'>
      <input  name='q1' value='-1' id='q1a-1' type='radio' onclick='mand();' />
</div>
</div>

以上为 q1 到 q10 的 10 个问题中的每一个重复。

在 10 个问题的末尾,我有两个textareas用户可以写评论,但是,如果用户选择值为 2 或 1 的任何响应,则需要出现第一个。如果用户选择任何响应,textarea需要出现第二textarea个值为 4 或 3 但尚未选择值为 2 或 1 的响应。

最后,一旦用户回答了最后一个问题,即问题 10,我需要运行 jQuery——此时我需要触发代码。

过去,我为每个响应手动创建了 Javascript 代码并进行了检查,但我想知道是否有使用 jQuery 的更简洁、更简洁的方式?

4

2 回答 2

1

Well I have not formatted code well but I guess this will help you.Also I checked the last answer given and I guess everytime accessing this object is not that good idea.But its just my opinion. All the best :-)

`var myradio = $('input[name=nettype]');
var nettype = myradio.filter(':checked').val();

if(nettype ==1 || nettype ==2 )
{
 $("#myTextArea1").show();
 $("#myTextArea2").hide();
}
else if(nettype ==3 || nettype == 4 )
{
 $("#myTextArea2").show();
 $("#myTextArea1").hide();
}`

For comment you have added to previous answer you can add following code

`if ( $('.myClass').filter(function(){
    return $(this).val() != '';
    }).length == 0
 )
 {
  /* code to run when all are empty */

 }`

you can add this classname myClass to your textboxes so that when all textboxes will be answered then you can fire code for radiobutton. :-)

于 2013-07-24T10:14:51.833 回答
0
var flag=0;

$("input[type='radio']:checked").each(function() {
  if($(this).val()==1 || $(this).val()==2 ){
    $("#myTextArea1").show();
     flag++;
  }
  else if(($(this).val()==3 || $(this).val()==4) && flag==0)
    $("#myTextArea2").show();
});

回答最后一个问题时触发此代码!

更新:这是完整的代码...

 $(document).ready(function() {

   $("#disagree").hide();
   $("#agree").hide();

   $("input[name='q10']").click(function() {

    $("#disagree").hide();
    $("#agree").hide();

    var flag=0;

    $("input[type='radio']:checked").each(function() {

       if($(this).val()==1 || $(this).val()==2 ){

           $("#disagree").show();
           $("#agree").hide();
           flag++;
       }

      else if(($(this).val()==3 || $(this).val()==4) && flag==0)

           $("#agree").show();
   });
 });    
});
于 2013-07-24T10:01:44.563 回答