2012-02-04 67 views
5

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

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

(添加到搜索按钮的onclick代码)

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

我测试

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

回答

7

后添加这个您'.click()':

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

它应该解决问题;-)

+0

是的,这是正确的 - 问题在于输入按键实际上是要将表单提交给服务器 - 页面重定向无法在此时发生。 – 2012-02-05 16:07:09

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; 
} 

希望这有助于

杰里米

+0

感谢您的答案。但我认为我的问题是关于触发按钮点击的onkeypress事件,但没有正确执行重新加载(使用URL参数)。 – Jairo 2012-02-05 02:37:19

+0

好的,我仍然不确定你在问什么 - 它不触发脚本,还是不重新加载页面? – 2012-02-05 14:24:48

+0

实际上奇怪的是,它会触发按钮上的点击,但按钮上的事件不会被执行(reloadin/redirecting)。重定向事件仅在手动点击按钮时才起作用。:( – Jairo 2012-02-05 14:47:16

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

马克

0

问题是有一个id,通过的XPage生成。我有同样的问题。 xPages前缀自定义控件的ID像查看:_id1:_id ...尝试通过提供完整的ID