多选列表,每个项目都有数量选项

2023-12-22

我的 html 页面中有一个自由文本字段,但我想用给定的字符串填充它。假设我有字符串“apple”、“banana”和“pineapple”,现在我想要一个“添加内容”按钮来打开模式框,或者如果更简单,只需将列表嵌入到我的页面中,给我一个列表,我可以在其中选择多个项目,并可以选择输入每个选定项目的数量,并将选定的字符串添加到我的文本字段。例如“3 x 苹果,2 x 菠萝”

我真的很感激任何提示,因为我不知道如何在 javascript / html 中解决这个问题

它基本上是一个购物车,但我找不到任何简单的东西。


尝试这个:

var txt = document.getElementById( 'droptxt' ),
    content = document.getElementById( 'content' ),
    list = document.querySelectorAll( '.content input[type="checkbox"]' ),
    quantity = document.querySelectorAll( '.quantity' );

txt.addEventListener( 'click', function() {
    content.classList.toggle( 'show' )
} )

// Close the dropdown if the user clicks outside of it
window.onclick = function( e ) {
    if ( !e.target.matches( '.list' ) ) {
        if ( content.classList.contains( 'show' ) ) content.classList.remove( 'show' )
    }
}

list.forEach( function( item, index ) {
    item.addEventListener( 'click', function() {
        quantity[ index ].type = ( item.checked ) ? 'number' : 'hidden';
        calc()
    } )
} )

quantity.forEach( function( item ) {
    item.addEventListener( 'input', calc )
} )

function calc() {
    for ( var i = 0, arr = []; i < list.length; i++ ) {
        if ( list[ i ].checked ) arr.push( quantity[ i ].value + ' x ' + list[ i ].value )
    }

    txt.value = arr.join( ', ' )
}
#droptxt {
    padding: 8px;
    width: 300px;
    cursor: pointer;
    box-sizing: border-box
}
.dropdown {
    position: relative;
    display: inline-block
}
.content {
    display: none;
    position: absolute;
    background-color: #f1f1f1;
    min-width: 200px;
    overflow: auto;
    box-shadow: 0 8px 16px 0 rgba(0, 0, 0, .2);
    z-index: 1
}
.quantity {
    float: right;
    width: 40px
}
.content div {
    padding: 10px 15px
}
.content div:hover {
    background-color: #ddd
}
.show {
	display: block
}
<p>Click on the below text field:</p>
<div class="dropdown">
<input type="text" id="droptxt" class="list" readonly>
    <div id="content" class="content">
        <div class="list">
            <input type="checkbox" id="apple" class="list" value="Apple" />
            <label for="apple" class="list">Apple </label>
            <input type="hidden" class="list quantity" min="1" value="1" />
        </div>
        <div class="list">
            <input type="checkbox" id="banana" class="list" value="Banana" />
            <label for="banana" class="list">Banana </label>
            <input type="hidden" class="list quantity" min="1" value="1" />
        </div>
        <div class="list">
            <input type="checkbox" id="pineapple" class="list" value="Pineapple" />
            <label for="pineapple" class="list">Pineapple </label>
            <input type="hidden" class="list quantity" min="1" value="1" />
        </div>
    </div>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多选列表,每个项目都有数量选项 的相关文章

随机推荐

  • Java - thread.sleep 的替代品

    我需要将 while 循环暂停特定的毫秒数 我尝试过使用 Thread sleep duration 但它不准确 特别是在循环场景中 毫秒精度在我的程序中很重要 这是我不想返回检查条件直到expectedElapsedTime已经过去了 w
  • 无法使用 a2wsgi 让 FastAPI 与 CPanel 配合使用

    似乎很多人都遇到了同样的问题 但到目前为止 它被证明是无法解决的 我希望有人能解决这个问题 我尝试在 cPanel 上运行 FastAPI 并不断收到错误 UID 1293 19858 Child process with pid 2008
  • iOS13 通过滑动(屏幕边缘)弹出视图控制器不起作用

    有正常的UINavigationController与一些堆叠UIViewController按下后 我无法使用 屏幕边缘 滑动手势返回根视图控制器 没有自定义导航栏 没有自定义后退按钮 与使用 后退 滑动手势相关的内容是否发生了变化 我知
  • 为什么这里的外部

    我这里有一个jsfiddle https jsfiddle net Lh7qbye2 7 https jsfiddle net Lh7qbye2 7 这里还有一个测试网页 https shetline com test test01 htm
  • Rx 中立即去抖

    我正在寻找一位运营商debounce一系列的事件 比如说用户的点击 输入和输出应该是这样的 interval gt lt gt lt in 1 2 3 4 5 5 6 7 8 out 1 4 这个想法就像下划线的反跳immediate op
  • 为什么可执行文件无法接收 Makefile 中导出的变量?

    我有一个 makefile 其中导出将由可执行文件接收的变量 但令人惊讶的是可执行文件没有接收导出的值 请帮我 31 test 32 echo 33 echo Testing Electric Fence 34 echo After the
  • 套接字在进程后打开,打开完成

    在服务器端关闭客户端套接字并退出应用程序后 套接字仍会打开一段时间 我可以通过netstat看到它 Every 0 1s netstat tuplna grep 6676 tcp 0 0 127 0 0 1 6676 127 0 0 1 3
  • IIS HTTP 错误 403.1 - 禁止:执行访问被拒绝

    我有一个在 IIS 6 Windows Server 2003 上运行的 ASP NET 1 1 应用程序 这是我们的应用程序 但我们正在尝试专门复制客户的安装 以便将应用程序文件夹从他们的生产服务器完全复制到我们的测试计算机上 然后我们手
  • 查找在线/离线会员总数 Discord.js

    您好 我正在执行服务器状态命令 但我不知道如何查找总成员数在线 离线所以如果有人能帮助我那就太好了 client on message message gt if message author bot return false if mes
  • Django:在现有的 html 页面上返回 StreamingHttpResponse

    由于每个问题最好有一个问题 因此如果与问题的其他部分相似 请耐心等待另一个我的问题 https stackoverflow com questions 29921085 django passing value from form to v
  • 如何在 Silverlight/WPF 中反转裁剪几何体?

    The UIElement Clip http msdn microsoft com en us library system windows uielement clip aspx属性需要一个Geometry http msdn micr
  • 拦截 GWT RequestFactory 请求

    有没有办法在客户端拦截RequestFactory请求 我想拦截这样的调用 dummyRequest dummyOperation fire new Receiver
  • QT 安装程序框架:在简介页面之前添加新的向导页面

    我想在 QT 安装程序向导的介绍页面之前添加新页面 该页面将有图像和按钮 单击按钮后 我将导航到介绍页面 我可以这样做吗 我尝试过 但没有显示 但是 如果我将其添加到其他页面之前 例如 Target Dir 它确实会显示我的页面 有人可以在
  • 大型项目的 Visual Studio 2010 C++ 链接器性能

    在我的公司 我们仍在使用 Visual Studio 2005 但正在研究 Visual Studio 2010 希望它能加快我们开发周期的某些部分 目前 我们最感兴趣的是 Visual Studio 2010 的 C 链接器的性能 在构建
  • 拥有正确的日期时间和正确的时区

    我在用feedparser为了获取RSS数据 这是我的代码 gt gt gt import datetime gt gt gt import time gt gt gt import feedparser gt gt gt d feedpa
  • 在 TypeScript 中导入 Victor.js?

    我正在尝试使用胜利者 js http victorjs org 我在 TypeScript 项目 3 0 1 中使用了一个库 尝试导入和使用它时我真的很心痛 我已经从 npm 安装了它及其类型 victor types victor 我尝试
  • 如何获取laravel Blade中唯一的小时和分钟?

    我试图在刀片中获取小时 分钟和秒 通常我使用如下 calllog delivery date 但现在我的要求是获得小时 分钟和秒 这是我试图得到的方法 calllog delivery date gt todatestring 是的 我想我
  • 如何显示本地图像直到 NetworkImage() 在 flutter 中加载?

    new CircleAvatar backgroundColor Colors black87 backgroundImage new NetworkImage url radius 45 0 我想显示本地图像CircleAvatar直到N
  • 在 Web2py Python 中格式化日期

    我正在寻找一个函数来格式化日期以获得日 月和年 日期以以下格式存储在我的数据库中 2012 09 26 如果你的目标是在web2py模板上显示 那么你必须使用纯Python来格式化 row datetime field strftime d
  • 多选列表,每个项目都有数量选项

    我的 html 页面中有一个自由文本字段 但我想用给定的字符串填充它 假设我有字符串 apple banana 和 pineapple 现在我想要一个 添加内容 按钮来打开模式框 或者如果更简单 只需将列表嵌入到我的页面中 给我一个列表 我