如何使用 Javascript 聚焦范围滑块?
How to focus on a range slider using Javascript?
我希望能够专注于“范围”类型的输入元素,换句话说,默认滑块,这样就可以拖动滑块而不用户实际点击它。
显而易见的解决方案是只使用 sliderelement.focus()
。
然而,这是行不通的。
我发现 here 这样做的原因是我必须在滑块的句柄上调用此方法。
slider handle的class应该是'ui-slider-handle'。
但是由于某种原因 document.querySelector('.ui-slider-handle')
returns null
.
奇怪的是,当我使用 $('.ui-slider-handle')
.
时,这个 确实与 JQuery 一起工作
我做了 this fiddle 来澄清我的问题。我只想使用 Javascript.
来解决这个问题
--- 编辑 ---
也许我的解释不够清楚。 class ui-slider-handle
不是我添加到滑块手柄的自定义 class,因为我无法访问该手柄。根据我找到的答案(我之前说过),我预计这是默认值 class。
在您的 fiddle 中,querySelector 是正确的。
你的 jQuery 将永远 return 如此。
例如,将 var handle2 = document.querySelector('.ui-slider-handle');
更改为类似 var handle2 = document.querySelector('.ui-slider-handlesdfsdfsdfsdf');
的虚构 class,并且 return 是正确的。
如果你想检查一个元素是否存在,你可以使用.length。
所以只需将 .length 添加到您的选择器,它们都会 return false。
var handle1 = $('.ui-slider-handle').length;
var handle2 = document.querySelector('.ui-slider-handle');
$('#1').html('JQuery, handle found: ' + (handle1 ? 'true' : 'false'))
$('#2').html('Javascript, handle found: ' + (handle2 ? 'true' : 'false'))
要将焦点放在范围元素上,只需使用 .focus()
.
这是一个例子。使用按钮和箭头键可以看到它 gaining/losing 聚焦在元素上。
function getFocus() {
document.getElementById("myRange").focus();
}
function loseFocus() {
document.getElementById("myRange").blur();
}
<input type="range" id="myRange" value="50">
<p>Click the buttons below to give focus and/or remove focus from the slider control.</p>
<button type="button" onclick="getFocus()">Get focus</button>
<button type="button" onclick="loseFocus()">Lose focus</button>
我希望能够专注于“范围”类型的输入元素,换句话说,默认滑块,这样就可以拖动滑块而不用户实际点击它。
显而易见的解决方案是只使用 sliderelement.focus()
。
然而,这是行不通的。
我发现 here 这样做的原因是我必须在滑块的句柄上调用此方法。
slider handle的class应该是'ui-slider-handle'。
但是由于某种原因 document.querySelector('.ui-slider-handle')
returns null
.
奇怪的是,当我使用 $('.ui-slider-handle')
.
时,这个 确实与 JQuery 一起工作
我做了 this fiddle 来澄清我的问题。我只想使用 Javascript.
--- 编辑 ---
也许我的解释不够清楚。 class ui-slider-handle
不是我添加到滑块手柄的自定义 class,因为我无法访问该手柄。根据我找到的答案(我之前说过),我预计这是默认值 class。
在您的 fiddle 中,querySelector 是正确的。
你的 jQuery 将永远 return 如此。
例如,将 var handle2 = document.querySelector('.ui-slider-handle');
更改为类似 var handle2 = document.querySelector('.ui-slider-handlesdfsdfsdfsdf');
的虚构 class,并且 return 是正确的。
如果你想检查一个元素是否存在,你可以使用.length。
所以只需将 .length 添加到您的选择器,它们都会 return false。
var handle1 = $('.ui-slider-handle').length;
var handle2 = document.querySelector('.ui-slider-handle');
$('#1').html('JQuery, handle found: ' + (handle1 ? 'true' : 'false'))
$('#2').html('Javascript, handle found: ' + (handle2 ? 'true' : 'false'))
要将焦点放在范围元素上,只需使用 .focus()
.
这是一个例子。使用按钮和箭头键可以看到它 gaining/losing 聚焦在元素上。
function getFocus() {
document.getElementById("myRange").focus();
}
function loseFocus() {
document.getElementById("myRange").blur();
}
<input type="range" id="myRange" value="50">
<p>Click the buttons below to give focus and/or remove focus from the slider control.</p>
<button type="button" onclick="getFocus()">Get focus</button>
<button type="button" onclick="loseFocus()">Lose focus</button>