如何使<标签>文本启用或禁用<输入>范围?

How to make a <label> text enable or disable an <input> range?

提问人:Mysterius 提问时间:11/15/2023 最后编辑:Mysterius 更新时间:11/15/2023 访问量:53

问:

我希望在单击标签时范围自行切换(最小/最大)。 仅使用HTML或CSS可以吗?我需要一些JS吗?

我有以下代码:

<label>
        This is the label text
        <input type="range" min="0" max="1" step="0.01" value="1" />
</label>

编码 : https://jsfiddle.net/gjxf60s8/

JavaScript HTML 输入 标签

评论

0赞 Chris G 11/15/2023
想更详细地介绍您的需求吗?你说的“嘟”是什么意思?“你试过什么?
0赞 tacoshy 11/15/2023
这个想法从一开始就存在缺陷。主要问题是,标签是为用户和屏幕阅读器提供帮助的语义标签。默认情况下,焦点和单击标签也会直接选择影响输入。更改默认行为将导致 UX 和可访问性丢失。如果要相互切换最小值和最大值,则应包含一个单独的切换开关。

答:

-1赞 Daniel Muñoz Gallardo 11/15/2023 #1

你需要使用 js。

试试这段代码。

document.addEventListener('DOMContentLoaded', function() {
  var label = document.querySelector('label');
  var rangeInput = document.querySelector('input[type="range"]');
  
  label.addEventListener('click', function() {
    // Toggle between min and max values
    if (rangeInput.getAttribute('min') === '0') {
      rangeInput.setAttribute('min', '1');
      rangeInput.setAttribute('max', '100');
    } else {
      rangeInput.setAttribute('min', '0');
      rangeInput.setAttribute('max', '1');
    }
  });
});

评论

0赞 Mysterius 11/15/2023
谢谢你的回答,但我想我的问题不是很清楚。我不想更改最小值和最大值,我希望该值在单击标签时在最小值和最大值之间切换。使用您的代码作为基础,这是有效的方法:jsfiddle.net/v1ausztf
0赞 Daniel Muñoz Gallardo 11/15/2023
尝试新答案:)中的新代码
-1赞 Daniel Muñoz Gallardo 11/15/2023 #2
  1. 删除 step 属性
<label>
        This is the label text
        <input type="range" min="0" max="1" step="0.01" value="1" />
</label>
  1. 试试这个新的js代码
document.addEventListener('DOMContentLoaded', function() {
  var label = document.querySelector('label');
  var rangeInput = document.querySelector('input[type="range"]');

  label.addEventListener('click', function() {
    // Toggle between min and max values
    if (rangeInput.value > rangeInput.max) {
      rangeInput.value = rangeInput.min;
    } else {
      rangeInput.value = rangeInput.max;
    }
  });
});
  1. 在此处实现 https://jsfiddle.net/tzko8hse/3(单击会将值更改为标签上定义的最大值或最小值。