【问题标题】:how to make multiple select checkbox with ajax and no button submit如何使用ajax制作多选复选框并且没有按钮提交
【发布时间】:2022-01-07 11:10:22
【问题描述】:

Python 3.9 Django 3.2 我有 category 和 product ,通过模板中的一个简单表格,我选择了 1 或 2-3 个复选框,我得到了结果。 现在如何通过 ajax 而没有按钮“提交”。

我选择了几个产品类别,每次点击复选框都是 ajax 然后单击复选框将参数添加到请求中。

这类似于您在网上商店中选择多个参数的方式。您选择了 2 个参数并收到了经过筛选的产品列表

我想你需要拦截发送,在缓存中存储一​​个请求并在这个请求中添加一个新的

              <form  method="post" id="category-box">
                {% csrf_token %}
                <div class="form-check">
                  <input class="form-check-input" type="checkbox" name='category' value="{{c.name}}" >
                  <label class="form-check-label" for="{{c.name}}"><a href="{{ c.get_absolute_url }}">{{ c.name }}</a></label>
                </div>
                {% endfor %}
                <button type="submit">Submit</button>
              </form>

【问题讨论】:

    标签: javascript python jquery django checkbox


    【解决方案1】:

    您可以在form 元素上设置onChange,当表单中的任何输入发生更改时触发。当表单发生变化时,您发送带有更新参数的 AJAX 请求并加载新数据。

    虽然这可能会损害性能,但在短时间内单击多个复选框会触发每次单击的请求,这是不必要的。这可以在发送请求之前稍微延迟处理,并检查表单是否随后发生了变化。

    【讨论】:

    • 延迟是个好主意。用户单击每个复选框需要时间,因此不要立即提交请求。每个 onChange 都会重置延迟。最后,用户暂停了足够长的时间以提交 AJAX 请求。很多购物网站都应该实现这一点。
    • 谢谢!我完全同意,提交按钮被高估了:D 当您在 keyup 事件上实现搜索输入和触发请求时,同样的延迟原则也很有效。如果你给它 0.5-1 秒的延迟,它并不是那么激烈,但它允许用户编写(或单击)他们想要的选项,并且只有在延迟到期后它才会触发具有最终值的请求。
    • @thegman1001 我明白这一点,所以我做到了。但这不是我需要的。现在它像这样工作 - 每次选择一个复选框时,旧的(以前的)过滤器都会被重置,我会得到一个新的过滤器。我需要在前一个过滤器中添加一个新过滤器,所有这一切都通过 ajax 而没有发送按钮
    • @Ivan 不确定您的代码的其余部分如何,但您必须以支持使用新选择的值扩展先前值的方式处理它。我假设您遇到了问题,因为 for 循环中的每个复选框都具有相同的名称。当一个复选框被选中时,您应该将该值推送到一个数组或在取消选中它时将其从数组中删除。
    猜你喜欢
    • 1970-01-01
    • 2018-12-13
    • 2019-05-23
    • 1970-01-01
    • 2018-11-03
    • 2014-07-14
    • 2014-07-08
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多