передать строку, содержащую пробелы в JavaScript

0

У меня есть такой класс div и вы хотите вызвать функцию setlocation, которая установит значение состояния в текстовое поле

<div class="overview over_widt">
    <ul>
        <li class="auto" title="All India"></li>
        {% for state_obj in state_list %}
            <li name="state" class="auto" title="{{state_obj.name}}"><a href="#{{state_obj.id}}" onclick=javascript:setlocation("{{state_obj.name}}")> {{ state_obj.name }}</a></li>
         {% endfor %}
    </ul>

моя функция java-скрипта

function setlocation(name){
    //alert(name);
    $('#id_autocomplete').val(name);
    document.getElementById('city_state').style.display="none"
}

и мое текстовое поле

<input type="text" class="text2" name="location" id="id_autocomplete" placeholder="Enter Location" onfocus="show_div();" onkeyup="div_autocomplete()"/>

Проблема в том, что у меня есть некоторые состояния, у которых в них есть "пробелы", и передача этих параметров создает проблему. Я пробовал передать объект также как

onclick=javascript:setlocation("{{state_obj}}")

но это также не работает.

  • 0
    « Передача этих параметров создает проблему » и в чем конкретно проблема ?
  • 0
    Используйте encodeURIComponent для кодирования строки и передачи ее в setlocation.
Показать ещё 2 комментария
Теги:

1 ответ

3
Лучший ответ

Вы должны поместить значение атрибута HTML в кавычки:

onclick="setlocation('{{state_obj.name}}')"

В противном случае значения с пробелом испортит ваш HTML. Если вы не используете кавычки, то считаются частью этого значения только символы до следующего пробела. Поэтому, если сгенерированный HTML был

onclick=setlocation("foo bar")

Тогда у вас будет атрибут onclick со значением setlocation("foo и boolean attribute bar") (хотя это, вероятно, будет недействительным, я не думаю, что имена атрибутов могут содержать " или )).

Но на самом деле вместо использования встроенных обработчиков событий вы можете использовать делегирование событий или любой другой способ привязки обработчиков событий.

  • 0
    Если вы объясните отрицательный голос, я могу улучшить свой ответ. Без объяснения я мало что могу сделать. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню