如何检查值所选元素具有多个名称选择

问题描述 投票:1回答:2

如何提醒只有当所有选定的元素的值等于“否”。

我试着用.val,但不知道(如果,或..)如何使用.click得到警报,只有当这两个单选按钮得到值"n"

        $('input[name="q1"], input[name="q2"]').change(function() {
          if ($(this).val() == 'y') {
            alert('Yes if any');
          }
          else {
          // both radio buttons with "No" value: (how to)
          /*
            if ($(this).click().val == 'n'){
              alert('No if both');
            }
          */
            alert('No if both');
          }
        });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group">
       <p>Q1</p>
       <input type="radio" name="q1" value="y">Yes
       <input type="radio" name="q1" value="n">No
    </div>
    
    <div class="form-group">
       <p>Q2</p>
       <input type="radio" name="q2" value="y">Yes
       <input type="radio" name="q2" value="n">No
    </div>

我想说明只有当单选按钮具有"n"价值的第二个警告,但我无法弄清楚如何让jQuery来在这种情况下检查是否有多个值同时/在一起。

javascript jquery html
2个回答
0
投票

使用上投入&&运营商,他们被检查时。使用:checked选择检查他们的检查状态。你正在寻找的条件是这个

if($('input[name="q1"]:checked').val() =='n' && $('input[name="q2"]:checked').val()=='n')
            alert('No if both');
          }

$('input[name="q1"], input[name="q2"]').change(function() {
          if ($(this).val() == 'y') {
            alert('Yes if any');
          }
          else {
      
         if($('input[name="q1"]:checked').val() =='n' && $('input[name="q2"]:checked').val()=='n')
            alert('No if both');
          }
        });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group">
       <p>Q1</p>
       <input type="radio" name="q1" value="y">Yes
       <input type="radio" name="q1" value="n">No
    </div>
    
    <div class="form-group">
       <p>Q2</p>
       <input type="radio" name="q2" value="y">Yes
       <input type="radio" name="q2" value="n">No
    </div>

1
投票

得到选择单选按钮值的阵列,则可以使用阵列的方法,如includesevery

const $inputs = $('input[name="q1"], input[name="q2"]');
$inputs.change(function() {
  const vals = $inputs
    .filter(':checked')
    .map((_, input) => input.value)
    .get();
  if (vals.includes('y')) {
    console.log('At least one "Yes"');
  } else if (vals.length === 2 && vals.every(val => val === 'n')) {
    console.log('Both "No"');
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group">
  <p>Q1</p>
  <input type="radio" name="q1" value="y">Yes
  <input type="radio" name="q1" value="n">No
</div>

<div class="form-group">
  <p>Q2</p>
  <input type="radio" name="q2" value="y">Yes
  <input type="radio" name="q2" value="n">No
</div>

通过使用阵列,这是很容易扩展到更大的单选按钮组的数量而无需额外的代码。

© www.soinside.com 2019 - 2024. All rights reserved.