gpt4 book ai didi

javascript - 如何在 p :calendar 中的鼠标悬停时显示工具提示

转载 作者:行者123 更新时间:2023-12-01 00:46:31 25 4
gpt4 key购买 nike

我想在将鼠标悬停在 PrimeFaces 6.2 中的 p:calendar 元素中的某些日期上时显示工具提示。我认为正确的方法是使用全局工具提示并更改日历内 a 元素的标题。我如何访问这些?

我尝试使用 p:calendaronmouseover - 属性,希望能够将元素作为参数进行访问。第一步,我想在控制台上打印一些内容:

calendar.xhtml:

[...]
<h:outputScript library="js" name="calendar.js" />
<p:calendar
id="calendar"
value="#{calendarManagedBean.dateToday}"
mode="inline"
onmouseover="hoverDate"
beforeShowDay="colorizeDate"
/>
[...]

calendar.js:

[...]
function hoverDate() {
console.log("hoverTest");
}
[...]

当我将鼠标悬停在日历中的日期上时,我希望将“hoverTest”打印到浏览器的 javascript 控制台,但它不会执行任何操作。我尝试为 hoverDate() 使用 0、1 和 2 个参数。 documentation (第 54 页)只说“当指针按钮移动到输入元素上时执行客户端回调。”,没有提及任何有关参数的内容。

方法 colorizeDate 位于同一个 javascript 文件中并且工作正常,因此问题不可能是方法 hoverDate 找不到。

我做错了什么?

最佳答案

正如对您问题的评论已经暗示的那样,p:calendar 组件的 mouseover 事件绑定(bind)到父日期输入文本,而不是日期选择器或日期选择器中的各个日期。

显然,解决方案是在 JavaScript 中手动执行此绑定(bind)。使用 PrimeFaces 7.0,以下解决方案应该有效,

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Calendar hover test</title>
</h:head>
<h:body>
<h:form>
<p:calendar />
</h:form>
<script>
$(document).on("mouseenter", ".ui-datepicker-calendar td", function() {
console.log(this.dataset.year, this.dataset.month, this.children[0].textContent);
});
</script>
</h:body>
</html>

这将在 PrimeFaces 日期选择器表下包含的所有“td”元素上设置实时/动态绑定(bind),并在 JavaScript 控制台上打印出类似于以下内容的内容;

2019 7 27
2019 7 6
2019 7 13
2019 7 12
2019 7 19

根据您的需要,您还可以进一步使用 h:commandScript (如果您使用的是 JSF 2.3)或 p:remoteCommand< 将其绑定(bind)到支持 bean Java 回调。那么当这个事件发生时你也可以访问Java端。

如果您使用的是旧版本的 PrimeFaces,日期选择器的类名可能会有所不同(尽管我认为它在相当长的一段时间内都是相同的)。在这种情况下,您可以使用浏览器的 DOM 检查器来查找绑定(bind)的路径。

关于javascript - 如何在 p :calendar 中的鼠标悬停时显示工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57294723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com