首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据输入到文本框中的数字显示div

根据输入到文本框中的数字显示div
EN

Stack Overflow用户
提问于 2017-12-18 15:18:47
回答 4查看 286关注 0票数 0

我想根据输入字段中的数字显示div。如果用户输入1,则不应显示任何来宾字段。如果用户输入2,则应显示.guest-0。如果用户输入3.guest-0guest-1,应该显示等等。如果用户更改了他们的答案,它应该反映他们的变化。

代码语言:javascript
复制
<p>Attendees</p>
<input type="text" class="attendees" max="4">

<div class="guest-0">
    <span>guest 1 name</span>
    <span>guest 1 more</span>
</div>
<div class="guest-1">
    <span>guest 2 name</span>
    <span>guest 2 more</span>
</div>
<div class="guest-2">
    <span>guest 3 name</span>
    <span>guest 3 more</span>
</div>
<div class="guest-3">
    <span>guest 4 name</span>
    <span>guest 4 more</span>
</div>

<script>
    $('div[class*="guest-"]').hide();
</script>

这可以在jQuery或纯JS中完成。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-12-18 15:25:13

代码语言:javascript
复制
$('.attendees').on('change', function(){
    $value = Math.max(0, Number(this.value) - 1);
    $('div[class*="guest-"]').hide().slice(0, $value).show();
});

jsFiddle

票数 1
EN

Stack Overflow用户

发布于 2017-12-18 15:33:35

您可以使用input事件跟踪用户输入,然后获取输入和子字符串1的值以获取要显示的元素数,然后使用.slice()选择要显示的范围:

代码语言:javascript
复制
$('[class^="guest-"]').hide().slice(0, Math.max(0, this.value - 1)).fadeIn("slow");

使用选择器中的开始符号guest-将所有元素以^=开头:

代码语言:javascript
复制
$('[class^="guest-"]')

代码:

代码语言:javascript
复制
$('[class^="guest-"]').hide();

$('input.attendees').on('input', function() {
  $('[class^="guest-"]').hide().slice(0, Math.max(0, this.value - 1)).fadeIn("slow");
})
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Attendees</p>
<input type="text" class="attendees" max="4">

<div class="guest-0">
  <span>guest 1 name</span>
  <span>guest 1 more</span>
</div>
<div class="guest-1">
  <span>guest 2 name</span>
  <span>guest 2 more</span>
</div>
<div class="guest-2">
  <span>guest 3 name</span>
  <span>guest 3 more</span>
</div>
<div class="guest-3">
  <span>guest 4 name</span>
  <span>guest 4 more</span>
</div>

票数 0
EN

Stack Overflow用户

发布于 2017-12-18 15:34:10

下面是一个jQuery解决方案:

代码语言:javascript
复制
$('.guest').hide();

$('.attendees').change(function() {
  $('.guest').hide();
  var inputNum = $(this).val();
  $('.guest').each(function() {
    var displayNum = $(this).attr("display");
    if (inputNum > displayNum) {
      $(this).show();
    }
  });
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Attendees</p>
<input type="text" class="attendees" max="4">

<div class="guest" display="1">
  <span>guest 1 name</span>
  <span>guest 1 more</span>
</div>
<div class="guest" display="2">
  <span>guest 2 name</span>
  <span>guest 2 more</span>
</div>
<div class="guest" display="3">
  <span>guest 3 name</span>
  <span>guest 3 more</span>
</div>
<div class="guest" display="4">
  <span>guest 4 name</span>
  <span>guest 4 more</span>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47871381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档