在android上的样式选择上触发默认事件

时间:2013-04-01 14:39:12

标签: javascript android google-chrome mobile

我在选择框上有自定义包装器。当我点击它时,我想显示来自android的原生选择。我尝试在隐藏的选择上触发“焦点”,“点击”和“鼠标中心”,但这些选项都不起作用。

1 个答案:

答案 0 :(得分:3)

好的,所以我经过多次修补后创造了一个小提琴并且它起作用(原来只是webkit)。如果有人想出更好的解决方案,我们将非常感激。

HTML

<button id="clickme" value="click me!">Click me!</button>
<select id="select">
    <option>Default</option>
    <option value="1">1</option>
    <option value="2">2</option>
</select>

的jQuery

var clickme = jQuery("#clickme"),
    select = jQuery("#select");
clickme.on("mousedown", function (e) {
    proxyMouseEvent(e, select[0]);
});
clickme.on("click", function (e) {
    proxyMouseEvent(e, select[0]);
});
function proxyMouseEvent(event, element) {
    var evt = document.createEvent("MouseEvents");
    evt.initMouseEvent(event.type, event.bubbles, event.cancelable, window,
        0, 0, 0, 0, 0, false, false, false, false, 0, null);
    element.dispatchEvent(evt);
}

jsFiddle

基本上,我正在从按钮捕获事件,复制它并将其发送到选择。当select检测到mousedown事件时,它会触发它的默认行为(在桌面操作系统中显示下拉列表,而在移动设备中则显示覆盖列表)