2011-09-21 140 views
0

我有这个代码,当搜索按钮被按下时工作正常,但是如果有人点击输入按钮,它不会从数据库返回任何值。阿贾克斯提交问题

function showDetails(str){ 
    if (str==""){ 
     document.getElementById("searchDiv").innerHTML=""; 
     return; 
     } 

     if (window.XMLHttpRequest) { 
      xmlhttp=new XMLHttpRequest(); 
    } 
     else { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    xmlhttp.onreadystatechange=function(){ 

    if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
    document.getElementById("searchDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 
    xmlhttp.open("GET","ajax_details.php?q="+str,true); 
    xmlhttp.send(); 
    } 

下面是我如何在单独的页面中使用它。

searchField是我的表单中的文本输入字段。

<button type="button" name="search" onclick="showDetails(searchField.value)">Search</button> 

就像我说的,它从服务器返回的数据只有当搜索按钮被按下,但不是当你砸电脑键盘上的回车键。有什么办法可以使它对两者都有反应?

回答

0

这是因为您没有绑定任何事件来按下某个键。你的活动非常清晰地标记为onclick。所以它响应点击。将它绑定到按键,检查该按键是否是输入键,如果是,则触发ajax请求。

+0

或者更好,只需将其添加到窗体的'onsubmit'事件 – sdleihssirhc

+0

@sdleihssirhc - 我没有我的电脑在这里,你的意思是添加提交和onclick;或只是onsubmit? –

+0

@maxedison - 感谢您的提示,将尝试。但是,是否有一个同时包含按键,onsubmit和onclick的事件处理程序?或者当事件被触发时,是否需要单独调用我的代码中的所有这些处理函数。再次感谢你的帮助。 –