【问题标题】:Is there any way to do multiple select in p:selectManyMenu without using the ctrl key有没有办法在不使用 ctrl 键的情况下在 p:selectManyMenu 中进行多项选择
【发布时间】:2016-09-05 11:34:56
【问题描述】:

我有primefaces selectManyMenu,我想在不使用ctrlkey或其他东西的情况下选择多个项目。有没有办法做到这一点?我为此找到了richfaces multipleKeyboardFree,但不幸的是在primefaces中我没有找到

Richfaces 示例:http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=extendedDataTable&sample=exTableSelection&skin=blueSky

Primefaces 只能在复选框中单击或使用 ctrl 单击时起作用,我不想要这个。我想单击行上的任意位置,它必须像 Richfaces 示例一样工作

【问题讨论】:

  • 是的,我已经看到了高级,但它只能在复选框中单击,我不想要这个。我想点击行上的任何地方,它必须像 Richfaces 示例一样工作。
  • @h.celik 请在下次提出您的问题时首先提及类似的具体要求,并在此更新您的问题。其他用户可能不会阅读所有评论并且不知道此附加要求。
  • 我编辑了,谢谢@irieill

标签: jsf primefaces


【解决方案1】:

我知道的唯一方法(至少到 PrimeFaces 6.0.x,回答时的当前版本)是覆盖 selectManyMenu 的 bindEvent() 函数,因此在没有元键的情况下单击(此处为 ctrl case) 不会取消选择。对于 PrimeFaces 的主干版本,line 1879 in the forms.jsf file

所以

if(!metaKey) {
    $this.unselectAll();
}

变成

if(!metaKey) {
    //$this.unselectAll();
}

如何覆盖一个完整的 PrimeFaces javascript 函数可以在this Stackoverflow Q/A 中阅读

另外,在上面forms的1879行下面,有if(metaKey && item.hasClass('ui-state-highlight')) 1882行。if条件下不应该有metakey,必须像这样: if(item.hasClass('ui-state-highlight')) 。因此,如果用户想在没有 ctrl 的情况下取消选择项目,它可以正常工作

【讨论】:

  • 是的,这是一个答案,我试过了,它工作正常。非常感谢@Kukeltje
  • 另外,在@Kukeltje上面所说的表格中的第1879行下,有 if(metaKey && item.hasClass('ui-state-highlight')) 第1882行。不应该有在 if 条件下是 metakey,它必须是这样的: if(item.hasClass('ui-state-highlight')) 。因此,如果用户想在没有 ctrl 的情况下取消选择项目,它可以正常工作
  • 请“编辑”答案,我会批准编辑,因此它将成为其中的一部分
猜你喜欢
  • 2017-12-27
  • 2011-01-25
  • 2014-08-23
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 2012-01-18
相关资源
最近更新 更多