我使用Xpages自定义控件创建了一个搜索字段(id:searchField)和一个搜索按钮(id:searchButton)。我在搜索字段上添加了一个onkeypress事件,这样它就会触发对searchButton的点击。然后,searchButton将重新加载页面,但url参数来自搜索字段。问题是页面重新加载,但是当我在搜索字段中按下时,搜索参数不会添加到URL ,但是当我按下searchButton时工作正常。以下是我使用的代码:
(代码添加到searchField的onkeypress)
if (typeof thisEvent == 'undefined' && window.event) { thisEvent = window.event; } if (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的错误还是我错过了什么?
答案 0 :(得分:7)
在'.click()'之后添加:
thisEvent.preventDefault();
thisEvent.stopPropagation();
它应该解决问题; - )
答案 1 :(得分: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 对象有更多属性可用于检查某些按键操作:请参阅here
标记
答案 2 :(得分: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;
}
希望这有帮助,
杰里米
答案 3 :(得分:0)
问题是由xpage生成的id。我有同样的问题。 xPages前缀自定义控件的id,如view:_id1:_id ...尝试给出完整的id