javascript - 如何检查表单中是否单击了动态生成的单选按钮?

标签 javascript jquery

我正在使用 php 生成一个包含多项选择问题的表单,现在我想通过检查是否单击每个问题的单选按钮来检查每个问题是否已得到解答。

<div class="opt">
    <div class="row1">                                                 
      <label class="label">{{ $question->question }}</label>
    </div>
<div class="ans">                                                            
  $answer=$answers[$question->id]
  @foreach ($answer as $answer)
     <label class="btn btn-default no-margin-rule" >
        <input type="radio" name="{{$count+1}}" value="{{$answer->id}}" id="ans{{$answer->answer}}" />
        <span class="option{{$answer->answer+1}}"></span>
      </label>
    @endforeach
  </div>
 </div>
$("#sub").click(function() {
  var check = true;
  $("input:radio").each(function() {
    var name = $(this).attr('name');
    if ($("input:radio[name=" + name + "]:checked").length) {
      check = true;
    } else {
      check = false;
    }
  });

  if (check) {
    $("#form1").submit();
  } else {
    swal("Oops!", "Please select at least one answer in each question.", "error")
  }
});

最佳答案

假设有多个问题,正如您在问题下的注释中所述,那么您只需检查 .ans 元素的总数与 .ans< 的数量是否匹配 包含选中 radio 的元素,如下所示:

$("#sub").click(function() {
  var $answers = $('.ans');
  var valid = $answers.length == $answers.filter(':has(:radio:checked)').length;

  if (valid ) {
    $("#form1").submit();
  } else {
    swal("Oops!", "Please select at least one answer in each question.", "error")
  }
});

作为旁注,出于可访问性的原因,我建议您在 form 元素的 submit 事件下执行此检查,而不是单击按钮。

关于javascript - 如何检查表单中是否单击了动态生成的单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58114622/

相关文章:

javascript - Lodash如何在比较不同对象的两个集合时分配对象的特定属性

javascript - 如何在 React.js 中渲染变量组件

onkeyup 的 Javascript 问题

javascript - Swiper.js 与 Rangeslider.js - 在 Rangeslider.js onSlide 回调函数上禁用 Swiper.js 触摸事件

jquery - 只有 jQuery 事件处理程序需要位于 $(document).ready(function....?

javascript - 从本地主机调用 api 的生产环境

javascript - 在不同的函数中为一个函数设置变量

javascript - C# 将图像数据发送到具有破坏图像 src 的双斜杠的 View

jquery - bx slider : How to continue auto sliding after clicking in default bx pager?

javascript - 如何水平滑动元素