2013-03-13 101 views
0

所以,如果我是添加在我輸入的東西用一個空格(試驗測試),並點擊提交,它會顯示它作爲測試+測試另外,如果我連擊提交,就說明它測試%2Btest代替測試+測試 需要用那些東西幫助..允許空白

<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', updateVal); 

updateVal(); 

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

爲什麼你認爲URL編碼是一個問題嗎? – Oded 2013-03-13 19:52:40

+0

您也可以在1次點擊之後始終禁用該按鈕。 – tymeJV 2013-03-13 19:56:15

+0

如果我要輸入測試測試並點擊提交,它將保持爲測試+測試也有我的網址有問題...第一次我點擊提交 - 完美,網址去測試+測試。如果我點擊再次提交(不更改任何內容) - url更改爲測試%2Btest – user2128056 2013-03-13 20:14:25

回答

1

您只需要更換每次輸入設定的值時空間:

$("[name=" + values[0] + "]").val(decodeURIComponent((values[1] || '').replace(/\+/g, ' '))); 

工作例如,你可以在這裏看到:http://jsbin.com/elewux/2/edit

+1

如果它是字符串中有效的「+」號?如'2 + 2 = 4'? – Vlad 2013-03-13 19:57:38

+0

這樣它不會工作。 – user2128056 2013-03-13 20:11:34

+0

我修正了代碼,現在它可以正常使用'2 + 2 = 4' – Vadim 2013-03-13 20:18:20