我正在建立一个我在这里找到的样本: http://datatables.net/forums/discussion/13488/adding-parameters-to-a-url-to-pre-filter
有人可以解释这个正则表达式的作用以及我如何修改它以接受空格?目前,当您输入空格时,浏览器会将其编码为%20。如何让浏览器将空格解释为空格并过滤正确的字符串?
示例:“http://example.com/list/?search=bobby%20flay”仍应在Datatables搜索字段中插入字符串“bobby flay”。它还将编码的字符串插入“bobby%20flay”,显然没有找到结果。有任何想法吗?感谢。
$.urlParam = function(name){
var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (!results)
{
return;
}
return results[1] || "";
};
$(document).ready(function(){
$('#myTable').DataTable( {
"oSearch": {"sSearch": $.urlParam('search')}
...
});
答案 0 :(得分:1)
要使用您目前拥有的内容,您可以使用以下内容替换这两个功能:
$(document).ready(function(){
var arr = window.location.href.split('='),
search = arr[arr.length-1].replace(/%20/g, " ");
$('#myTable').DataTable( {
"oSearch": {"sSearch": search}
});
});
1)等待文档加载
2a)使用window.location.href
获取网址2b)使用split在' ='
的每个实例上创建一个数组3a)获取数组的长度,并获取最后一个对象:arr.length-1
3b)使用正则表达式将%20的每个实例替换为" "
4)将新字符串传递给现有的表函数
答案 1 :(得分:0)
这样的事情应该有效: https://jsfiddle.net/pdo5k5ht/
var urlString = "http://example.com/list/?search=bobby%20flay",
arr = urlString.split('='),
finalString = arr[arr.length-1].replace(/%20/g, " ");
alert(finalString );