0

我的脚本有问题。如果我用空格键输入一些东西,即:google map它会在输入框中改变:google+map我不喜欢什么。另外...当我再次提交时,它变得更加糟糕

<form name="input" action="" method="get">
Search: <input type="text" name="search">
<input type="submit" value="Submit">
  <div id="result"></div>
</form>

--

$('form').submit(function() {
    var form_data = ($(this).serialize());
    window.location.hash = form_data.replace('=','/');
    return false;
});

$(window).on('hashchange', function () {
    var values = window.location.hash.slice(1).split('/');
    $("[name=" + values[0] + "]").val(values[1]);
});

var values = window.location.hash.slice(1).split('/');
$("[name=" + values[0] + "]").val(values[1]);
4

2 回答 2

1

您需要使用decodeURIComponent从散列中转义值:

$('form').submit(function() {
    var form_data = ($(this).serialize());
    window.location.hash = form_data.replace('=','/');
    return false;
});

$(window).on('hashchange', updateVal);

updateVal();

function updateVal() {
   var values = window.location.hash.slice(1).split('/');
   $("[name=" + values[0] + "]").val(decodeURIComponent(values[1]));
}
于 2013-03-13T17:40:26.990 回答
0

在这种情况下,<form name="input" action="" method="get">不应使用 FORM 方法“GET”。根据此处的 W3 推荐

1.3 选择 HTTP GET 或 POST 的快速清单

在以下情况下使用 GET:交互更像是一个问题(即,它是一种安全操作,例如查询、读取操作或查找)。在以下情况下使用 POST:交互更像是订单,或者交互以用户感知的方式改变资源的状态(例如,订阅服务),或者用户对结果负责相互作用。

在 GET 中,数据是在 URI 中发送的,而 URI 中没有spaces,因此存在问题。

但是,如果您需要为此使用 GET 请求,则使用 decodeURIComponentdecodeURIComponent(values[1])来转义该值

于 2013-03-13T17:51:04.677 回答