5

我使用 Xpages 自定义控件创建了一个搜索字段 (id:searchField) 和一个搜索按钮 (id:searchButton)。我在搜索字段上添加了一个 onkeypress 事件,以便触发对 searchButton 的单击。然后 searchButton 将重新加载页面,但 url 参数来自搜索字段。问题是页面重新加载,但当我在搜索字段中按 ENTER 时搜索参数未添加到 URL ,但当我按 searchButton 时正常工作。以下是我使用的代码:

(添加到searchField的onkeypress的代码)

if (typeof thisEvent == 'undefined' && window.event) { thisEvent = window.event; }
如果(thisEvent.keyCode == 13)
{
    document.getElementById("#{id:searchButton}").click();
}

(在 searchButton 的 onclick 中添加的代码)

window.location.href = "test.xsp?search=" + document.getElementById("#{id:searchField}").value;

我在 IE 和 Firefox 中测试过,都有问题。我创建了一个示例 HTML 文件,它工作正常。这是 XPages 的错误还是我在这里遗漏了什么?

4

4 回答 4

7

在“.click()”之后添加:

       thisEvent.preventDefault();
       thisEvent.stopPropagation(); 

它应该解决问题;-)

于 2012-02-05T15:35:33.233 回答
6

将输入字段的onKeyPress事件更改为

if (typeof thisEvent == 'undefined' && window.event) { thisEvent = window.event; }
if (thisEvent.keyCode == dojo.keys.ENTER)
{
    dojo.byId("#{id:searchButton}").click();
    thisEvent.preventDefault();
}

应该足以解决问题。请注意,为了跨浏览器兼容性,我使用了

dojo.keys.ENTER

dojo.byId("id");

属性/方法。dojo.keys对象具有更多属性来检查某些按键:请参见此处

标记

于 2012-02-06T09:15:04.263 回答
0

我最近在 XPage 中完成了这项工作,以下脚本适用于我的跨浏览器:

var e = arguments[0] || window.event;
if ( e.keyCode==13 || e.which==13) {
  window.location.href = 'searchResults.xsp?query=' + 
      encodeURI(dojo.byId('#{id:searchInput}').value));
  return false;
}

希望这可以帮助,

杰里米

于 2012-02-05T00:29:15.220 回答
0

由 xpage 生成的 id 存在问题。我有同样的问题。xPages 为自定义控件的 id 加上前缀,例如 view:_id1:_id ... 尝试提供完整的 id

于 2012-02-25T11:55:18.567 回答