У меня есть форма с текстовым вводом с 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.% 2CNew York% 2C NY
Смотрите, что пробелы не кодируются? Я даже попытался добавить place = place.replace(/\s/g, '+')
, но, похоже, это не работает после кодирования. Что я делаю не так? Благодарим за помощь.
Обновление:
Поражение Firefox! Обнаружено, что пробелы были правильно закодированы, но Firefox не отображает пробелы в кодировке, даже если они есть. Протестировано в Internet Explorer 10 и Google Chrome, и оба они отображают пробелы в своем закодированном формате. Спасибо Адаму за скрипку http://jsfiddle.net/VYDcv/