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

时间:2012-02-04 23:26:21

标签: javascript javascript-events onclick onkeypress xpages

我使用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的错误还是我错过了什么?

4 个答案:

答案 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