首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何禁用Primefaces中第一个输入的焦点?

问如何禁用Primefaces中第一个输入的焦点?
EN

Stack Overflow用户
提问于 2013-04-02 10:02:13
回答 5查看 18.6K关注 0票数 14

我的页面中有一个对话框,其中包含一个输入字段(日期,日历)。问题是,日历在打开对话框后直接打开,因为焦点设置在第一个输入上。

在Primefaces中有什么方法可以禁用焦点吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-02 22:16:15

您可以更改默认行为;

http://forum.primefaces.org/viewtopic.php?f=3&t=29050

您可以始终覆盖小部件的默认行为,例如防止日历焦点放在对话框打开上;

代码语言:javascript
复制
PrimeFaces.widget.Dialog.prototype.applyFocus = function() {
  var firstInput = this.jq.find(':not(:submit):not(:button):input:visible:enabled:first');
  if(!firstInput.hasClass('hasDatepicker')) {
      firstInput.focus();
  }
}

原始代码是;

代码语言:javascript
复制
PrimeFaces.widget.Dialog.prototype.applyFocus = function() {
  this.jq.find(':not(:submit):not(:button):input:visible:enabled:first').focus();
}

如果您将覆盖放在PrimeFaces资源之后,那么您的applyFocus实现将被拾取并使用。

我建议创建一个js文件,比如primefaces-overrides.js,并将类似的东西放入其中,不过,由于您是针对低级别的apis编写代码,所以您需要注意迁移过程中的回归,尽管我们的目标是尽可能地保持向后兼容性。

票数 18
EN

Stack Overflow用户

发布于 2017-06-02 18:06:36

在默认情况下,可以在另一个输入中设置更简单的焦点。

代码语言:javascript
复制
<p:dialog id="dialog" header="Users" focus="savebtn" widgetVar="txtName">

如果您正在从另一个文件调用

代码语言:javascript
复制
<p:dialog id="dialog" header="Users" focus="savebtn" widgetVar="formRegUsers:txtName">
票数 7
EN

Stack Overflow用户

发布于 2013-11-25 16:24:08

解决这个问题的另一个技巧是:

我在对话框中添加了一个文本输入,作为对话框的第一个输入:

代码语言:javascript
复制
<p:dialog id="myDialogId" widgetVar="myDialog"....

  <p:inputText id="fixForFocusProblem"/>

  <p:calendar ...
  ..
</p:dialog>

当显示对话框时,我称之为:

代码语言:javascript
复制
$('#myForm\\:fixForFocusProblem').show();
myDialog.show(); 
$('#myForm\\:fixForFocusProblem').hide();

这样,焦点就会集中在立即不可见的输入文本上。

不太好,但它的工作没有视觉干扰。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15761275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档