Vaadin 14:带有图标、文本和图像的文本字段标签的工具提示
Vaadin 14: tooltip at Textfield label with icon, text and image
有一个使用 field = new TextField(...); field.setLabel("Phone number");
创建的 Vaadin 14 TextField,如下所示:
我想像这样在该标签中添加一个交互式信息图标:
当用户点击(或触摸)信息图标时,系统应显示一个带有一些附加信息(格式化文本和图像)的弹出窗口或对话。
我尝试像这样添加一些 HTML 和 JavaScript:field.setLabel("Phone number <span onclick='...'>?</span>");
但浏览器只准确显示技术字符串及其所有标签等。
我已经用 field.getElement().setAttribute("title", "Some information");
设置了工具提示,但是如果没有格式化,这对于较长的文本来说并不理想,而且据我所知不适用于图像。
field.setHelperText(...)
也不是我要找的,因为它会持久显示文本,而不仅仅是 click/touch.
是否有 Vaadin 方法来实现交互式信息图标?否则我会尝试使用 JavaScript 和 CSS (查询标签元素并将隐藏的子元素添加到 TextField 并在悬停标签时显示它们,就像本例中的 https://www.scriptol.com/css/tooltip.php )。
问号来源:vaadin:info-circle-o (https://vaadin.com/components/vaadin-icons/html-examples)
从 14.6 开始,字段标签的“问题”是,它只是一个
属性 在元素上,而它最终作为的内容
<label>
标签,您只能提供文本。
一种替代方法是使用 FormLayout
,您可以在其中提供
一个组件作为标签,因此您可以提供“任何你想要的”。
例如。使用图标并添加 title
属性以获得一些简单的工具提示
来自浏览器:
new FormLayout().tap{
addFormItem( // XXX
new TextField(),
new Span(
new Text("The Label"),
VaadinIcon.QUESTION_CIRCLE.create().tap{
setSize('12px')
setColor('blue')
element.tap{
setAttribute("title", "The Help")
style.tap{
set('padding-left', '4px')
}
}
}
)
)
}
有一个使用 field = new TextField(...); field.setLabel("Phone number");
创建的 Vaadin 14 TextField,如下所示:
我想像这样在该标签中添加一个交互式信息图标:
当用户点击(或触摸)信息图标时,系统应显示一个带有一些附加信息(格式化文本和图像)的弹出窗口或对话。
我尝试像这样添加一些 HTML 和 JavaScript:field.setLabel("Phone number <span onclick='...'>?</span>");
但浏览器只准确显示技术字符串及其所有标签等。
我已经用 field.getElement().setAttribute("title", "Some information");
设置了工具提示,但是如果没有格式化,这对于较长的文本来说并不理想,而且据我所知不适用于图像。
field.setHelperText(...)
也不是我要找的,因为它会持久显示文本,而不仅仅是 click/touch.
是否有 Vaadin 方法来实现交互式信息图标?否则我会尝试使用 JavaScript 和 CSS (查询标签元素并将隐藏的子元素添加到 TextField 并在悬停标签时显示它们,就像本例中的 https://www.scriptol.com/css/tooltip.php )。
问号来源:vaadin:info-circle-o (https://vaadin.com/components/vaadin-icons/html-examples)
从 14.6 开始,字段标签的“问题”是,它只是一个
属性 在元素上,而它最终作为的内容
<label>
标签,您只能提供文本。
一种替代方法是使用 FormLayout
,您可以在其中提供
一个组件作为标签,因此您可以提供“任何你想要的”。
例如。使用图标并添加 title
属性以获得一些简单的工具提示
来自浏览器:
new FormLayout().tap{
addFormItem( // XXX
new TextField(),
new Span(
new Text("The Label"),
VaadinIcon.QUESTION_CIRCLE.create().tap{
setSize('12px')
setColor('blue')
element.tap{
setAttribute("title", "The Help")
style.tap{
set('padding-left', '4px')
}
}
}
)
)
}