检测与选择框的交互
Detecting interaction with select box
如何
(使用Javascript或jQuery)检测何时从选择框中选择了值,即使它与先前选择的选项相同(即没有触发更改事件)。
主要是我需要这个鼠标交互,但也适用于键盘的解决方案也会很方便。
我认为唯一可行的解决方案是通过将 select
的值设置为 mousedown
上的其他值来引起change
事件。在标记中,我创建了一个额外的选项(即第一个孩子)并将其隐藏(像往常一样完美隐藏在Chrome/FF/Safari,IE中)。所以看起来不错。
<select>
<option style="display: none"></option>
<option>First</option>
<option>Second</option>
<option>Third</option>
</select>
然后使用 jQuery,我们绑定change
并mousedown
事件,当mousedown
触发时,select
将其值重置为隐藏选项的值。
$("select").on({
change: function() {
console.log($(this).val());
},
mousedown: function() {
$(this).val($(":first", this).val());
}
});
演示:http://jsfiddle.net/LzNrS/
更新:为了在用户单击select
但决定不选择任何内容时保留所选值,我们可以稍微修改代码blur
添加事件并更新mousedown
。
var special = ""; // special hidden option value
var value = ""; // temporary variable
$("select").on({
change: function() {
console.log($(this).val());
},
mousedown: function() {
if (this.value == special) {
$(this).val(value);
return;
}
value = this.value;
$(this).val(special);
},
blur: function() {
if (this.value == special)
$(this).val(value);
}
});
演示:http://jsfiddle.net/LzNrS/1/
我不知道如果
您可以将事件处理程序附加到选择框选项元素并在单击时存储其值,它是否会从我的头顶上工作。
适用于鼠标,不适用于键盘 http://jsfiddle.net/w4DEJ/4/
我认为focus()函数会对你有所帮助。试试这个:http://api.jquery.com/focus/
相关文章:
- 下拉选择可自动更改第二个下拉选择
- 如何使用jQuery选择下拉列表的值
- p: inputText和p:在IE 10上选择OneMenu奇怪的交互
- 使用Javascript与选择输入交互
- 如何在日期选择器中禁用 ENTER 键盘交互
- OpenLayers 3 在选择交互时获取鼠标坐标
- 通过多边形绘制交互进行开放层 3 选择
- 聚合物可拖动与交互.js/阴影DOM选择器
- 检测与选择框的交互
- 复选框出现问题,点击和更改时选择交互
- 多个选择列表值在javascript中交互一段额外的时间
- 如何使用CasperJS与自定义选择框交互
- FB好友选择器框架在https中,不能与http中的托管页面交互
- Backbone js如何与css选择器交互
- 当特性有自己的样式时,选择不使用的交互样式
- 选择交互:仅在单击功能时切换
- 是否有更好的方法来选择不是交互元素的兄弟元素?
- 减少用于加速交互的jquery选择器的数量
- 自定义下拉列表向上滑动,如果我与jQuery日期选择器交互
- 选择标签php生成的代码需要javascript交互