javascript - 如果 textarea 为空,则防止选中其他复选框

标签 javascript jquery html twitter-bootstrap checkbox

一个带有一些textareas和一个sumbit按钮的表单都被禁用了,每个textarea旁边都有一个复选框。

选中复选框时:

1- 一条消息显示(你不应该让激活的文本区域为空)

2- 提交按钮保持禁用状态

3- 开始编写消息时隐藏并启用按钮。

当复选框未选中时:

1-消息隐藏

2-如果有文本则清除与之相关的textarea

三键返回禁用

到目前为止,我的以下代码一切都很完美。 现在,如果已经有一个已经用空 textarea 选中的复选框,我如何才能防止选中其他复选框? 逻辑是,如果启用了文本区域,则它必须接收文本。

//handling checkbox
$('input:checkbox').change(function() {
  if ($(this).prop('checked')) {
    $(".textareaalert").text("Don't let this activated textarea empty");
    $(".textareaalert").slideDown("slow");
    $("#submit").prop("disabled", true);
  } else {
    $(".textareaalert").slideUp("slow");
    $("#submit").prop("disabled", true);
    $("textarea").val('');

  }
});
//handling textarea
$("textarea").keyup(function() {
  var textareaLength = $(this).val().length;
  if (textareaLength == 0) {
    $(".textareaalert").text("Don't let this activated textarea empty");
    $(".textareaalert").slideDown("slow");
    $("#submit").prop("disabled", true);
  } else {
    $(".textareaalert").slideUp("slow");
    $("#submit").prop("disabled", false);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="textareaalert" style="display:none"></div>
<form class="horizontal">
  <div class="form-group">
    <label>Infancia</label>
    <div class="col-md-9">
      <textarea class="form-control" id="infancia" disabled></textarea>
    </div>
    <div class="col-md-2">
      <input type="checkbox"> <label>Activo</label>
    </div>
  </div>
  // more text area below
</form>

最佳答案

您可以使用 $('input:checkbox:checked')filter() 方法添加检查 checkbox 更改事件查找是否有任何选中的 checkbox 和空的 textarea。如果有,则不允许选中 checkbox

$('input:checkbox').change(function() {
  if ($(this).prop('checked')) {
    
    //check is there any checked checkbox with empty textarea
    var length = $('input:checkbox:checked').not(this).filter(function() {
      return !$(this).closest('.form-group').find('textarea').val();
    }).length;

    //don't allow the checkbox to be checked
    if (length > 0) {
      $(this).prop('checked', false);
      return;
    }

    $(".textareaalert").text("Don't let this activated textarea empty");
    $(".textareaalert").slideDown("slow");
    $("#submit").prop("disabled", true);
  } else {
    $(".textareaalert").slideUp("slow");
    $("#submit").prop("disabled", true);
    $("textarea").val('');
  }
});

$("textarea").keyup(function() {
  var textareaLength = $(this).val().length;
  if (textareaLength == 0) {
    $(".textareaalert").text("Don't let this activated textarea empty");
    $(".textareaalert").slideDown("slow");
    $("#submit").prop("disabled", true);
  } else {
    $(".textareaalert").slideUp("slow");
    $("#submit").prop("disabled", false);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="textareaalert" style="display:none"></div>
<form class="horizontal">
  <div class="form-group">
    <label>Infancia</label>
    <div class="col-md-9">
      <textarea class="form-control" id="infancia"></textarea>
    </div>
    <div class="col-md-2">
      <input type="checkbox">
      <label>Activo</label>
    </div>
  </div>
  <div class="form-group">
    <label>Infancia</label>
    <div class="col-md-9">
      <textarea class="form-control" id="infancia"></textarea>
    </div>
    <div class="col-md-2">
      <input type="checkbox">
      <label>Activo</label>
    </div>
  </div>

  <input id="submit" type="submit" disabled/>
</form>

关于javascript - 如果 textarea 为空,则防止选中其他复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47559100/

相关文章:

javascript - 打开表单上传对话框时如何设置默认文件夹

javascript - 将对象转换为字符串

javascript - navigator.mediaDevices.getUserMedia 与 http 服务器

javascript - 如何将字符串转换为数组?

javascript - jquery中点击函数的自动调用

javascript - TableSorter 寻呼机中的自定义页面拆分器

javascript - 为什么 catch 子句有自己的词法环境?

jquery - 如果检测到移动浏览器,是否有 "rails"重定向方法?

html - 弹出框箭头样式问题

javascript - 制作二维码全 Angular