提问人:Ole M 提问时间:2/8/2023 最后编辑:Ole M 更新时间:2/8/2023 访问量:405
iOS 的触摸/点击事件内部触发不起作用
Trigger inside of a touch/click event for iOS does not work
问:
我正在开发一个移动应用程序,我希望我的用户单击图像,并为此打开其设备的本机日期时间选择器应用程序。
注意:这适用于 android - 只是不适用于 iOS。
HTML格式:
<i class="fa fa-clock-o fa-2x" id="datetime_picker"></i>
<label id="new-incident-time-of-incident-label" class="label-datetime" data-field="IncidentDate" style="white-space: nowrap;"></label>
<input id="input" type="datetime-local" style="position: absolute; left: 9999px;"/>
从上面的代码中可以看出,我将输入扔到一边,让它留在 DOM 中,但不可见(我尝试了其他方法,例如 ,但这导致了其他问题)。它看起来像这样:display: none
visibility: hidden
当用户单击 -element 时,用于显示 中选择的值。label
input
i
所以,也许这看起来有点奇怪,但它适用于安卓设备。 对于 iOS 来说不是那么多。
这是我的JS:
$("#datetime_picker").on("touchend", () => {
$("#input").trigger("click");
});
我尝试了-, -, -事件的组合,但无济于事。click
touchend
touchstart
这是所有的JS代码,以防需要参考(你永远不知道......
const $input = $("#input");
let initDone = false;
function setValue(date) {
$input.val(new XDate(date).toString("yyyy-MM-dd'T'hh:mm"));
$("#new-incident-time-of-incident-label").text(new XDate(date).toString("yyyy-MM-dd'T'hh:mm"));
}
dsIncident.attachEvent("onDataLoaded", () => {
if (initDone) {
return;
}
initDone = true;
const date = dsIncident.currentRow("IncidentDate");
console.log("Initial date set:", date);
setValue(date);
});
$("#input").on("input", () => {
const date = new XDate($input.val())[0];
console.log("Date changed:", date);
dsIncident.currentRow("IncidentDate", date);
});
$("#datetime_picker").on("touchend", () => {
$("#input").trigger("click");
});
答:
1赞
CBroe
2/8/2023
#1
隐藏或置换输入没有区别
好的,但至少要测试一下很重要。有时这样的东西不起作用,因为元素被隐藏或移动了;例如,浏览器可能会尝试将弹出窗口位置定向到输入字段本身的位置。
您可以尝试定位输入字段,以便在单击时触发弹出窗口的部分位于应该触发此按钮的“时钟”图标后面。 在图标本身上(以便单击/点击可以穿过它),并且输入字段本身“隐藏”了 or something。(不是,这通常会触发元素无法再次“交互”的问题。pointer-events: none
opacity: .01
opacity: 0
评论
label