javascript - 以不响应复选框的形式过滤

标签 javascript jquery html

我在所需的类上有这个过滤器代码 我的问题是它没有检测到复选框:

这是在单击按钮时弹出的模型 Bootstrap HTML, 另外,是否可以防止模型在验证未通过时关闭它?当我点击按钮时,即使验证没有通过模型关闭,我必须再次打开它....

$("#save_2").click(function() {

  var required = $('input,textarea,select,input:checkbox').filter('.required');
  var allRequired = true;
  required.each(function() {
    if ($(this).val() == '') {
      allRequired = false;
    }
  });

  if (!allRequired) {
    Swal.fire({
      title: 'שגיאה!',
      text: 'אנא מלא את כל השדות המסומנים באדום',
      type: 'error',
      confirmButtonText: 'סגור'
    });
    $(".required").css("border", "1px solid red", "!important")
  }


});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="modal fade bd-example-modal-lg secondtarget" id="modelcheck" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
  <div class="modal-dialog modal-lg">

    <div class="modal-content" style="padding: 18px">
      <div class="modal-header">
        <div class="col-lg-12" style="text-align: center">

          <h5 class="modal-title" id="exampleModalLabel" style="text-align: center">טופס הצהרת ההורים על מצב בריאותו של ילדם להשתתפותו בתוכנית
          </h5>
          <a href="#" class="btn btn-info mt-5" id="h_std_name">
            <?php if (!isset($row['std_name'])){echo '';}else{echo $row['std_name'];} ?>
          </a>
        </div>
      </div>

      <div class="row col-lg-12">
        <p>אני מצהיר/ה כי (סמן את האפשרות הנכונה):</p>
        <p>1. <input type="checkbox" class="required" name="limit_1" value="1"> לא ידוע לי על מגבלות בריאותיות המונעות מבני/מבתי להשתתף בפעילות הנערכת בבית הספר ומטעמו.</p>
        <p>2 .יש לבני/לבתי מגבלות בריאותיות המונעות השתתפות מלאה/חלקית בפעילות בבית הספר ומטעמו כדלקמן:</p>
        <fieldset id="checkArray">
          <ul style=" list-style-type: none;">
            <li style="margin-right: 16px;"> <input type="checkbox" class="limit2 section_2" value="פעילות גופנית" name="limit_2[]"> פעילות גופנית </li>
            <li style="margin-right: 16px;"> <input type="checkbox" class="limit2 section_2" value="פעילות בחדר כושר" name="limit_2[]"> פעילות בחדר כושר </li>
            <li style="margin-right: 16px;"> <input type="checkbox" class="limit2 section_2" value="טיולים" name="limit_2[]"> טיולים </li>
            <li style="margin-right: 16px;"> <input type="checkbox" class="limit2 " value="תחרות ספורט של בתי הספר" name="limit_2[]"> תחרות ספורט של בתי הספר </li>
          </ul>
        </fieldset>
        <input type="text" class="form-control mt-2 section_2" name="limit2_activity " placeholder="פעילות אחרת">
        <input type="text" class="form-control mt-2 section_2" name="limit2_description " value="" placeholder="תיאור המגבלה">
        <div class="row mt-2 ">
          <div class="col-sm-4" style="width: ">
            <p>מצורף אישור רפואי שניתן ע"י </p>
          </div>
          <div class="col-sm-4">
            <input type="text" name="dr_name" class="form-control section_2">
          </div>
          <div class="col-sm">
            <div class="custom-file">
              <input type="file" class="form-control section_2" name="image">
            </div>
          </div>
          <div class="col-sm-12">
            <input type="text" class="form-control section_2" name="limit_time" placeholder="לתקופה">
          </div>

        </div>
        <div class="row  mt-2">
          <div class="col-sm">
            <p>3 .יש לבני/ לבתי בעיה בריאותית כרונית (כגון אסטמה, סוכרת נעורים, אפילפסיה, רגישות למזון,וכד').</p>
          </div>
        </div>
        <div class="row" style="margin-top: -16px">
          <div class="col-sm-12" style="width: 762px;" class="full-input">
            <ul style=" list-style-type: none;">
              <li style="margin-right: 16px;"> <input type="checkbox" value="1" class="limit3 required" name="limit_3"> כן </li>
              <li style="margin-right: 16px;"> <input type="checkbox" value="2" class="limit3 required" name="limit_3"> לא </li>
              <li style="margin-right: 16px;"> <input type="text" id="limit_3_req" class="form-control" name="limit_3_description" placeholder="פרט"> </li>
            </ul>
          </div>
        </div>
        <div class="row ">
          <div class="col-sm">
            <p>4 .בני/ בתי נוטל/ת תרופה/ות באופן קבוע</p>
          </div>
        </div>
        <div class="row" style="margin-top: -16px">
          <div class="col-sm-12" style="width: 762px;" class="full-input">
            <ul style=" list-style-type: none;">
              <li style="margin-right: 16px;"> <input type="checkbox" value="1" class="limit4 required" name="limit_4"> כן </li>
              <li style="margin-right: 16px;"> <input type="checkbox" value="2" class="limit4 required" name="limit_4"> לא </li>
              <li style="margin-right: 16px;"> <input type="text" class="form-control" id="limit_4_req" name="limit_4_description" placeholder="פרט"> </li>
            </ul>
          </div>
        </div>
        <div class="row  ">
          <div class="col-sm">
            <p>5 .בני/ בתי סובל/ת מרגישות לתרופות או למזון</p>
          </div>
        </div>
        <div class="row" style="margin-top: -16px">
          <div class="col-sm-12" style="width: 762px;" class="full-input">
            <ul style=" list-style-type: none;">
              <li style="margin-right: 16px;"> <input type="checkbox" value="1" class="limit5 required" name="limit_5"> כן </li>
              <li style="margin-right: 16px;"> <input type="checkbox" value="2" class="limit5 required" name="limit_5"> לא </li>
              <li style="margin-right: 16px;"> <input type="text" class="form-control" id="limit_5_req" name="limit_5_description" placeholder="פרט"> </li>
            </ul>
          </div>
        </div>
      </div>
      <div class="row  ">
        <div class="col-sm">
          <p>6 .אנו מאשרים לבני/ בתי להתשתתף בפעילות מים</p>
        </div>
      </div>
      <div class="row" style="margin-top: -16px">
        <div class="col-sm-12" style="width: 762px;" class="full-input">
          <ul style=" list-style-type: none;">
            <li style="margin-right: 16px;"> <input type="checkbox" value="1" class="limit6 required" name="limit_6"> כן </li>
            <li style="margin-right: 16px;"> <input type="checkbox" value="2" class="limit6 required" name="limit_6"> לא</li>
          </ul>
        </div>
      </div>
      <div class="row  ">
        <div class="col-sm">
          <p>7. האם הילד / הילדה יודעים לשחות</p>
        </div>
      </div>
      <div class="row" style="margin-top: -16px">
        <div class="col-sm-12" style="width: 762px;" class="full-input">
          <ul style=" list-style-type: none;">
            <li style="margin-right: 16px;"> <input type="checkbox" value="1" class="limit7 required" name="limit_7"> כן </li>
            <li style="margin-right: 16px;"> <input type="checkbox" value="2" class="limit7 required" name="limit_7"> לא </li>
          </ul>
        </div>
      </div>
      <div class="modal-footer">
        <div class="container">
          <div class="col mb-3">אישור ההורים</div>
          <div class="row">
            <div class="col-sm">
              <label for="health_date">תאריך הגשת ההצהרה</label>
              <input type="date" class="form-control required" value="" name="health_date">
            </div>
            <div class="col-sm">
              <label for="health_date">שם ממלא הטופס</label>
              <input type="text" placeholder="שם ההורה" value="" class="form-control required" name="parent_name">

            </div>
            <div class="col-sm">
              <button type="button" class="btn btn-primary" id="save_2" data-dismiss="modal" style="margin-top: 32px;">שמור</button>

            </div>

          </div>
        </div>
      </div>
    </div>
  </div>
</div>

最佳答案

$(el).val() 返回 value 属性的内容,无论复选框是否被选中。

const out = document.getElementById('out');

[...document.querySelectorAll('input')].forEach((i) => {
   console.log('value: ' + $(i).val());
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input id="cbx1" type="checkbox" value="1" checked />
<label for="cbx1">Checked</label>
<br>
<input id="cbx2" type="checkbox" value="2" />
<label for="cbx2">Unchecked</label>

<p id="out"></p>

Endless 的评论是正确的:您应该更喜欢使用 HTML5 的验证 API。但是,您可以编写 jQuery 来处理复选框的特殊情况。

如果必须检查具有 required 类的复选框以使表单有效,您可以按照以下行做一些事情:

if ($(this).is('[type="checkbox"]')) {
  allRequired = this.checked;
} else if ($(this).val() == '') {
  allRequired = false;
}

您还想在第一个无效输入时退出循环。否则,您只是在有效地验证表单中的最后一个输入。

关于javascript - 以不响应复选框的形式过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57209773/

相关文章:

javascript - 点击几下后 jQuery .load 函数就会变慢

javascript - 如何从 JSON 数组创建 React 组件?

javascript - angular 中 .next() 函数的解释

JavaScript 堆内存不足 | React/Node 应用程序中的 s3.getObject

javascript - jQuery 验证验证禁用的输入字段

javascript - 使用 Javascript 进行网页重定向

html - 如何调用带有 'name' 标签的 HTML 对象?

javascript - 如何在 React 中为 styleguidist 渲染 .md 文件中的两个组件?

javascript - Ajax 数据发布无法通过发布的 url

javascript - Django AJAX 登录表单验证