Проблема с подсчетом выбранных флажков и текстовой области - PullRequest
1 голос
/ 16 мая 2019

У меня есть код, который считает выбранные флажки и показывает их в делении.

Я пробовал разные вещи безуспешно, чего я хочу добиться, так это:

  • Когда текстовая область заполнена (длина текста> 1) -> добавить 1 к результату.
  • Добавьте 1 к результату, когда пользователь что-то печатает (это должно быть в реальном времени), и удалите 1, когда пользователь удаляет все в текстовой области.

Подсчет выбранных флажков (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>

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Использование события input для textarea и checkbox

$('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>
0 голосов
/ 16 мая 2019

Вы можете попробовать ниже

$('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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...