ユーザーが入力を入力するid txtPlaceのテキスト入力を含むフォームがあり、URLクエリとしてサーバーに渡されます。encodeURIComponent() を使用しようとしていますが、スペースをエンコードしていません。これが私の簡略化されたコードです
<div class="searchBoxRow">
<input type="text" id="txtPlace" size="55" placeholder="Enter place to search"/>
<a href="#" id="btnSearch">Search</a>
</div>
ここに私のjavascriptがあります
<script type="text/javascript">
$(function () {
$('#btnSearch').on('click', function (e) {
e.preventDefault;
var place = encodeURIComponent($('#txtPlace').val());
var url = "http://example.com?place=" + place;
document.location.href = url;
});
});
</script>
ユーザーがACME Co.,New York, NYと入力すると、生成される URL は
http://example.com?place=ACME Co.%2Cニューヨーク%2C NY
スペースがエンコードされていないことがわかりますか? 追加しようとしましplace = place.replace(/\s/g, '+')
たが、エンコード後に機能しないようです。私は何を間違っていますか?ご協力ありがとうございます。
アップデート:
Firefoxのせいだ!スペースが適切にエンコードされていることがわかりましたが、Firefoxはエンコードされているにもかかわらずスペースを表示していません。Internet Explorer 10とGoogle Chromeでテストされ、どちらもエンコードされた形式でスペースを表示します。フィドルをありがとうアダムhttp://jsfiddle.net/VYDcv/