限制从accordion head输入的最大数字,并使用jquery将每n个数字显示给div

py49o6xq  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(282)

我从这些链接中得到了一些成功的答案。
https://stackoverflow.com/a/68485231/1620626
https://stackoverflow.com/a/68489529/1620626
现在我想把它们放在一起。但在将数字切片并放入div中时似乎存在一些问题。以下是我的工作:

$('#mx_input,#num_list').hide();
$('.accordion-header').on('click', function() {
  var tabID = $(this).find('button').data('mx');
  $('#mx_input').show();
  $('#mx_input').attr('max', tabID); //assign max=data-mxlen
});

$("#mx_input").on("input", function() {
  $('#num_list').show();
  let $el = $(this);
  var mxlen = $el.attr("max");
  var input = $el.val();
  if (input.length >= mxlen) {
    $('#num_list').append('<li>' + input.slice(0, mxlen) + '</li>');
    $el.val('');
  }
});
ul#num_list {
  border: solid 1px red;
  border-radius: 5px;
  padding: 5px;
}
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="accordion" id="accordionExample">
  <div class="accordion-item">
    <h2 class="accordion-header" id="headingOne">
      <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne" data-mx="999">
        Accordion Item #1
      </button>
    </h2>
    <div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
      <div class="accordion-body">
        body 1
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header" id="headingTwo">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo" data-mx="99">
        Accordion Item #2
      </button>
    </h2>
    <div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample">
      <div class="accordion-body">
        body 2
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header" id="headingThree">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree" data-mx="9">
        Accordion Item #3
      </button>
    </h2>
    <div id="collapseThree" class="accordion-collapse collapse" aria-labelledby="headingThree" data-bs-parent="#accordionExample">
      <div class="accordion-body">
        body 3
      </div>
    </div>
  </div>
</div>
<input type="number" name="mxlen" min="0" max="" id="mx_input" />
<ul id="num_list"></ul>

问题是:
数字不是标准上期望的切片 if (input.length >= mxlen) { 作为(1)中的数字,未切片。那就不 append 在目的地分区。
以下是您可以轻松编辑的链接:https://jsfiddle.net/c8jb1hkx/

46scxncf

46scxncf1#

您的代码按预期工作。在你的 HTML 您已将“最大长度”设置为 9 , 99 , 999 . 如果您想让它成为最大数,那么您需要附加需要更改最大长度的列表 1 , 23 分别在你的 HTML . 也转换 mxlennumber 在比较之前。
JSFIDLE
或更新代码以比较输入长度和数据长度-
JSFIDLE

相关问题