2013-03-13 154 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

相关问题