【问题标题】:JSF: Create a "dummy" button which does nothing?JSF:创建一个什么都不做的“虚拟”按钮?
【发布时间】:2012-08-30 02:00:30
【问题描述】:

在我们的 JSF Web 应用程序中,我们有一个输入字段,用户可以在其中输入数字 ID,然后应用程序会查找该 ID。为了帮助用户,查找绑定到“onchange”,因此一旦用户离开该字段或点击其他地方,它就会被触发。

因此,用户输入“123”,按下制表符(或单击),查找运行。这很好用;然而,出于可用性的原因,我们还想提供一个用户可以点击的按钮,以便那些想知道“我应该点击哪里来触发查找?”的用户。为此,我们希望提供一些看起来和感觉上都像 HTML / JSF 按钮的东西,但什么都不做(因为无论如何点击都会触发“onchange”事件)。

有没有办法制作一个什么都不做的 JSF 按钮?我尝试使用不带“action”属性的 h:commandButton,但它仍然会触发请求。

【问题讨论】:

  • 为什么没有一个与jsf按钮相同类的简单html按钮,是点击按钮没有触发jsf事件还是阻止了它?
  • 或图像,如果您的目标是输入字段失去焦点
  • 当然我可以使用 HTML 按钮,甚至只是一个图像,但我想要 JSF 提供的附加功能(例如能够使用图标属性,使用图标的 JSF 资源引用,具有启用/禁用状态等)。
  • <input type="button" disabled="#{bean.disabled}"> 效果很好。

标签: jsf button usability


【解决方案1】:

由于您也将此问题标记为可用性问题,因此如果 onchange 已经触发了查找,我建议您首先不要使用按钮。

从用户的角度来看,点击按钮是否是强制性的,这是令人困惑的。在他们进入该字段并跳到下一个字段后,他们无需单击按钮即可看到查找发生。如果有一个按钮,他们会认为它的存在是有原因的。

在这些情况下,我喜欢的选项是 onkeypress 处理程序,超时时间为半秒,然后查找值。

【讨论】:

  • 感谢您的意见。是的,这是一个可用性问题,但是出于问题中给出的原因,我们的利益相关者已明确要求 onchange 触发器按钮。 onkeypress+timeout 解决方案很有趣,但是我担心如果有人在输入过程中犹豫,它可能会被触发 - 这可能会非常令人困惑。
  • 我已使用上述解决方案在 GWT 应用程序中查找街道和城镇以查找荷兰邮政编码。超时触发正则表达式匹配,只有当模式完成时才会执行实际查找,在此期间我还将光标更改为忙碌状态。
  • 是的,与正则表达式匹配的组合解决了这个问题——好主意。然而,在我们的例子中,输入只是一个数字(可变长度),因此无法知道用户是否完成了输入。
【解决方案2】:

p:commandButton type="button" 只会提供一个按钮。

【讨论】:

    猜你喜欢
    • 2013-12-27
    • 2016-07-24
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 2018-03-17
    相关资源
    最近更新 更多