搜索功能javascript提交

时间:2012-02-15 12:43:06

标签: javascript search

所以我试图创建一个搜索xml文件的函数,我给出了结果,但页面被刷新并继续加载。我认为这是因为提交,但我使用return false,我仍然有同样的问题。任何人都可以帮助我吗?

以下是我的代码

    <script type="text/javascript">
function loadXMLDoc(XMLname)
{
var xmlDoc;
if (window.XMLHttpRequest)
  {
  xmlDoc=new window.XMLHttpRequest();
  xmlDoc.open("GET",XMLname,false);
  xmlDoc.send("");
  return xmlDoc.responseXML;
  }
else if (ActiveXObject("Microsoft.XMLDOM"))
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async=false;
  xmlDoc.load(XMLname);
  return xmlDoc;
  }
alert("Error loading document!");
return null;

}
</script>
</head>
<body>
<form id="oForm" name="oForm" onsubmit="search(); return false">
<input type="text" name="name" id="txt_name" size="30" maxlength="70">
<input type="submit" value="klik" onclick="search()"/>
</form>
<script type="text/javascript">

function search(){
name = document.oForm.name.value.toLowerCase();
xmlDoc=loadXMLDoc("data.xml");
var nodeList = xmlDoc.getElementsByTagName("article");
for (var i = 0; i < nodeList.length; i++) {
    var titleNode = nodeList[i];

    if(titleNode.getElementsByTagName("title")[0].childNodes[0].nodeValue.toLowerCase() == name){
        document.write("<div style='width:450px;'>")
        document.write("<p>"+titleNode.getElementsByTagName("title")[0].childNodes[0].nodeValue+"</p>");
        document.write("<p>"+titleNode.getElementsByTagName("description")[0].childNodes[0].nodeValue+"</p>");
        document.write("<p>"+titleNode.getElementsByTagName("urltext")[0].childNodes[0].nodeValue+"</p>");
        document.write("</div>")
    }
}
}
</script>

我想重复一遍,我确实得到了结果,我只丢失了我的布局,页面一直在加载。我为safari / safari mobile制作了这个,所以如果有人能提出解决方案的话,我会贬低它。我不能使用任何服务器脚本,因为我需要能够离线缓存,所以我认为它必须是javascript。

事先提前

修改

    <input type="text" name="name" id="txt_name" size="30" maxlength="70">
<input type="button" value="klik" onclick="search();"/>

name = GetElementById("txt_name").value.toLowerCase();

2 个答案:

答案 0 :(得分:2)

假设xml处理代码有效,就这样做 - document.write擦除页面 PS:由于XML中的换行符,Firefox可能无法正常工作:

<html>
<head>
<script type="text/javascript">
function loadXMLDoc(XMLname) {
  var xmlDoc;
  if (window.XMLHttpRequest) {
    xmlDoc=new window.XMLHttpRequest();
    xmlDoc.open("GET",XMLname,false);
    xmlDoc.send("");
    return xmlDoc.responseXML;
  }
  else if (ActiveXObject("Microsoft.XMLDOM")) {
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.load(XMLname);
    return xmlDoc;
  }
  alert("Error loading document!");
  return null;
}
var xmlDoc=loadXMLDoc("data.xml");
var nodeList = xmlDoc.getElementsByTagName("article");
function search(theForm) {
  var name = theForm.myname.value.toLowerCase();
  var html = "";
  for (var i = 0; i < nodeList.length; i++) {
    var titleNode = nodeList[i];
    if (titleNode.getElementsByTagName("title")[0].childNodes[0].nodeValue.toLowerCase() == name) {
      html += "<div style='width:450px;'>";
      html += "<p>"+titleNode.getElementsByTagName("title")[0].childNodes[0].nodeValue+"</p>";
      html += "<p>"+titleNode.getElementsByTagName("description")[0].childNodes[0].nodeValue+"</p>";
      html += "<p>"+titleNode.getElementsByTagName("urltext")[0].childNodes[0].nodeValue+"</p>";
      html+= "</div>";
      document.getElementById("result").innerHTML=html
    }
  }
  return false; // cancel the submit
}
</script>
</head>
<body>
<form id="oForm" name="oForm" onsubmit="return search(this)">
<input type="text" name="myname" id="txt_name" size="30" maxlength="70">
<input type="submit" value="klik"/>
</form>
<div id="result"></div>
</body>
</html>

答案 1 :(得分:-1)

试试这个:

<input type="submit" value="klik" onclick="return search()"/>

并在搜索方法中:

function search() {
   .....

   return false;
}

编辑1: 您还可以为表单本身添加一个事件:

<form onsubmit="return false">

http://www.w3schools.com/jsref/event_form_onsubmit.asp

编辑2: 这对我有用:

<form onsubmit="return false">
    <input type="submit" value="Go" onclick="alert('yo');"/>
</form>
相关问题