XPages - onkeypress事件未正确触发点击

Jai*_*iro 5 javascript onclick javascript-events onkeypress xpages

我使用Xpages自定义控件创建了一个搜索字段(id:searchField)和一个搜索按钮(id:searchButton).我在搜索字段上添加了一个onkeypress事件,这样它就会触发对searchButton的点击.然后,searchButton将重新加载页面,但url参数来自搜索字段.问题是页面重新加载但是当我在搜索字段中按Enter时搜索参数没有添加到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的错误还是我错过了什么?

Fer*_*urg 7

在'.click()'之后添加:

       thisEvent.preventDefault();
       thisEvent.stopPropagation(); 
Run Code Online (Sandbox Code Playgroud)

它应该解决问题;-)


Mar*_*ink 6

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

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

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

dojo.keys.ENTER
Run Code Online (Sandbox Code Playgroud)

dojo.byId("id");
Run Code Online (Sandbox Code Playgroud)

财产/方法.该dojo.keys对象有很多属性进行检查某些按键:看这里

标记