我已将DSpace搜索框修改为以下内容:
用户在搜索框中输入搜索字符串,然后按Enter键以获取搜索结果。这将刷新页面,因此用户最初输入的搜索字符串将丢失。我想在搜索框中保留搜索字符串。我正在尝试使用javascript cookie实现这一点,因为我觉得它是最简单的解决方案之一。但我没有得到理想的结果。 这是搜索表单的代码:
<form id="ds-search-box" method="post">
<xsl:attribute name="action">
<xsl:value-of select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='contextPath']"/>
<xsl:value-of
select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='search'][@qualifier='simpleURL']"/>
</xsl:attribute>
<div class="wrap right rounded">
<input type="text" class="search left rounded" id="text-search" placeholder="Type name of book title, author, subject , keywords...">
<xsl:attribute name="name">
<xsl:value-of
select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='search'][@qualifier='queryField']"/>
</xsl:attribute>
<!--</input>
<input class="button-field" type="submit" i18n:attr="value"
value="xmlui.general.go">-->
<xsl:attribute name="onsubmit">
<xsl:text>
var a = document.getElementById("text-search");
document.cookie = a.value;
var s=document.cookie;
alert(s);
var form = document.getElementById("ds-search-box");
form.action=
</xsl:text>
<xsl:text>"</xsl:text>
<xsl:value-of
select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='contextPath']"/>
<xsl:text>/handle/" + radio.value + "</xsl:text>
<xsl:value-of select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='search'][@qualifier='simpleURL']"/>
<xsl:text>" ; </xsl:text>
<xsl:text>
</xsl:text>
</xsl:attribute>
</input>
</div>
</form>
我正在保存cookie中文本框的值。
我已将此代码包含在page-structure.xsl
文件的javascript部分中以访问Cookie:
<script type="text/javascript">
document.getElementById("text-search").value=document.cookie;
</script>
答案 0 :(得分:0)
原来我没有正确存储和检索cookie。我改变了下面的代码,它现在正在工作:
设置cookie的代码:
<input class="button-field" type="submit" i18n:attr="value"
value="xmlui.general.go" style="visibility:hidden">
<xsl:attribute name="onclick">
<xsl:text>
<!--Poonam (code added to create cookie)-->
var a = document.getElementById("text-search");
//alert(a.value);
document.cookie = "search=; expires=Thu, 01 Jan 1970 00:00:00 UTC"; //delete previous cookie
document.cookie = "search"+"="+a.value+";"; //create new cookie
//alert("Hello"+document.cookie);
<!--Poonam-->
var form = document.getElementById("ds-search-box");
form.action=
</xsl:text>
<xsl:text>"</xsl:text>
<xsl:value-of
select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='contextPath']"/>
<xsl:text>/handle/" + radio.value + "</xsl:text>
<xsl:value-of select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='search'][@qualifier='simpleURL']"/>
<xsl:text>" ; </xsl:text>
<xsl:text>
</xsl:text>
</xsl:attribute>
</input>
每当用户执行搜索时,搜索字符串都存储在名为search
的cookie中。代码首先在创建新cookie之前删除先前的cookie。
<script type="text/javascript">
window.onload = function (){
var cookie_string = getCookie("search");
//alert(cookie_string);
document.getElementById("text-search").value = cookie_string;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i!=ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) == 0)
return c.substring(name.length,c.length);
}
return "";
}
</script>
这会读取cookie并将其设置在搜索框中。