【问题标题】:Problem with counting selected checkboxes and textarea计算选定复选框和文本区域的问题
【发布时间】:2019-05-16 14:39:07
【问题描述】:

我有一个代码可以计算选中的复选框并将它们显示在一个 div 中。

我尝试了不同的事情但没有成功,我想要实现的目标如下:

  • 当文本区域被填充时(文本长度> 1)-->结果加1。
  • 当用户键入内容(应该是实时的)时,将结果加 1,当用户删除 textarea 中的所有内容时,删除 1。

Count selected checkboxes (CodePen)

$('input[type="checkbox"]').change(function() {
  var selected = 0;
  var number_of_checkboxes = $('input[type="checkbox"]:checked').length;
  selected += number_of_checkboxes;
  $('#result').html(selected);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="answers">
  <label for="text1">
        <input type="checkbox" name="text1" id="text1" value="1">
        <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
        </span>
    </label>
  <br>

  <label for="text2">
        <input type="checkbox" name="text2" id="text2" value="1">
        <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
        </span>
    </label>
  <br>

  <label for="text3">
        <input type="checkbox" name="text3" id="text3" value="1">
        <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
        </span>
    </label>
  <br>
  <br>

  <textarea id="selected" minlength="20" name="selected" placeholder="Lorem ipsum dolor sit amet" style="width: 500px; height: 100px;"></textarea>
  <div id="result">0</div>

</div>

【问题讨论】:

  • 好的,那么你的文本区域的事件处理程序在哪里处理用户对值的更改?

标签: javascript jquery html checkbox textarea


【解决方案1】:

textareacheckbox 上使用input 事件

$('input[type="checkbox"], #selected').on('input', function() {
  var checkboxes = $('input[type="checkbox"]:checked').length;
  var textarea = $('#selected').val() ? 1 : 0;

  $('#result').html(checkboxes + textarea);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="answers">
  <label for="text1">
        <input type="checkbox" name="text1" id="text1" value="1">
        <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
        </span>
    </label>
  <br>

  <label for="text2">
        <input type="checkbox" name="text2" id="text2" value="1">
        <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
        </span>
    </label>
  <br>

  <label for="text3">
        <input type="checkbox" name="text3" id="text3" value="1">
        <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
        </span>
    </label>
  <br>
  <br>

  <textarea id="selected" minlength="20" name="selected" placeholder="Lorem ipsum dolor sit amet" style="width: 500px; height: 100px;"></textarea>
  <div id="result">0</div>
</div>

【讨论】:

    【解决方案2】:

    你可以试试下面

    $('input[type="checkbox"]').change(function() {
    
      $('#result').html(getCount());
    });
    
    $('#selected').bind('input propertychange', function() {
      $('#result').html(getCount());
    });
    
    function getCount() {
      var selected = {
        checkBoxCount: 0,
        textBoxCount: 0
      };
    
      var number_of_checkboxes = $('input[type="checkbox"]:checked').length;
      selected.checkBoxCount += number_of_checkboxes;
    
      selected.textBoxCount = $('#selected').val() == '' ? 0 : 1;
    
      return selected.checkBoxCount + selected.textBoxCount;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="answers">
      <label for="text1">
                <input type="checkbox" name="text1" id="text1" value="1">
                <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
                </span>
            </label>
      <br>
    
      <label for="text2">
                <input type="checkbox" name="text2" id="text2" value="1">
                <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
                </span>
            </label>
      <br>
    
      <label for="text3">
                <input type="checkbox" name="text3" id="text3" value="1">
                <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
                </span>
            </label>
      <br>
      <br>
    
      <textarea id="selected" minlength="20" name="selected" placeholder="Lorem ipsum dolor sit amet" style="width: 500px; height: 100px;"></textarea>
      <div id="result">0</div>
    
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      相关资源
      最近更新 更多