【发布时间】:2017-10-27 14:37:27
【问题描述】:
我正在开发一个 asp.net Web 应用程序,我有以下代码来构建搜索字段部分,该部分根据用户的输入构建 URL 参数:-
<script type="text/javascript">
$(document).ready(function(){
$('#button').click(function(e) {
var count=1;
var s="";
var inputvalue = $("#journal").val();
var inputvalue2 = $("#keywords").val();
var inputvalue3 = $("#datepub").val();
var inputvalue4 = $("#title").val();
var inputvalue5 = $("#localcurrency").val();
var inputvalue6 = $("#locations").val();
var inputvalue7 = $("#dropdown1").val();
var inputvalue8 = $("#dropdown2").val();
if(inputvalue!=null && inputvalue!="")
{
s = s+ "FilterField"+count+"=Journal&FilterValue"+count+"="+inputvalue+"&";
count++;
}
if(inputvalue2!=null && inputvalue2!="")
{
s = s+ "FilterField"+count+"=KeyWords&FilterValue"+count+"="+inputvalue2+"&";
count++;
}
if(inputvalue3!=null && inputvalue3!="")
{
s = s+ "FilterField"+count+"=datepub&FilterValue"+count+"="+inputvalue3+"&";
count++;
}
if(inputvalue4!=null && inputvalue4!="")
{
s = s+ "FilterField"+count+"=Title&FilterValue"+count+"="+inputvalue4+"&";
count++;
}
if(inputvalue5!=null && inputvalue5!="")
{
s = s+ "FilterField"+count+"=localcurrency&FilterValue"+count+"="+inputvalue5+"&";
count++;
}
if(inputvalue6!=null && inputvalue6!="")
{
s = s+ "FilterField"+count+"=locations&FilterValue"+count+"="+inputvalue6+"&";
count++;
}
if(inputvalue7!=null && inputvalue7!="")
{
s = s+ "FilterField"+count+"=dropdown1&FilterValue"+count+"="+inputvalue7+"&";
count++;
}
if(inputvalue8!=null && inputvalue8!="")
{
s = s+ "FilterField"+count+"=dropdown2&FilterValue"+count+"="+inputvalue8+"&";
count++;
}
window.location.replace("/teamsites/Bib%20Test/Forms/search.aspx?"+s);
});
});
</script>
Journal <input type="text" id="journal">
keywords <input type="text" id="keywords">
<select id="datepub">
<option value=""></option>
<option value="1950">1950</option>
<option value="2010">2010</option>
<option value="2017">2017</option>
<option value="audi">Audi</option>
</select>
title
<select id="title">
<option value=""></option>
<option value="TestDoc">test doc</option>
<option value="t">t</option>
</select>
localcurrency
<select id="localcurrency">
<option value=""></option>
<option value="USD">USD</option>
</select>
locations
<select id="locations">
<option value=""></option>
<option value="US">US</option>
<option value="UK">UK</option>
</select>
dropdown1
<select id="dropdown1">
<option value=""></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
dropdown2
<select id="dropdown2">
<option value=""></option>
<option value="aa">aa</option>
<option value="bb">bb</option>
<option value="cc">cc</option>
<option value="dd">dd</option>
</select>
<button type="button" id="button">search</button>
当用户点击搜索按钮时,用户将被重定向到/teamsites/Bib%20Test/Forms/search.aspx页面,该页面带有url中的过滤参数,该页面将根据传递的参数显示相关记录。
现在过滤运行良好.. 但我面临的问题是,在我将用户重定向到此页面/teamsites/Bib%20Test/Forms/search.aspx 后,过滤器字段值(例如本地货币、位置、标题等)将清除。
那么我可以使用 JavaScript 为文件管理器字段分配其原始值吗?我的意思是我可以从 URL 中提取字段的值并将其分配给它们吗?所以在用户被重定向到/teamsites/Bib%20Test/Forms/search.aspx 之后,他们仍然可以看到填充了他们输入的过滤值的过滤字段?
【问题讨论】:
-
您可以使用 "document.URL" 获取当前 url 并将其拆分为 var url = document.URL; url = url.split('&');那么你可以得到一个包含你的值的数组。
-
@OmarFaruque 但我可以让它更动态,因为我的字段 id 等于参数名称......所以我不必为这些字段一一做这个..
-
从 url 获取值后,您可以像这样检查它 if(value != ''){$('input[name="test"]').val(value); }
-
将
window.location.replace("/teamsites/Bib%20Test/Forms/search.aspx?"+s);更改为ajax,类似于$.get('/search/Bib%20Test/Forms/search.aspx?"+s').then(function(data){refillSearchResult(data)}) -
为什么是
asp.net标签?因为如果您愿意,您可以通过代码以编程方式完成所有这些工作。
标签: javascript jquery html asp.net