2013-11-14 2 views
0

У меня есть класс Div, как это и хотите вызвать функцию setlocation, которая установит значение состояния в текстовом полепропуск строки, содержащие пробелы в JavaScript

<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 Script

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

«_passing the parameters создает проблему» и что такое ** проблема ** точно? –

+0

Используйте 'encodeURIComponent', чтобы закодировать строку и передать ее в setlocation. – shyammtp

+0

onclick = "javascript: setlocation ('{{state_obj.name}}')" – Jithin

ответ

3

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

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

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

onclick=setlocation("foo bar") 

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

Но на самом деле, вместо использования встроенных обработчиков событий вы можете использовать event delegation или any other way of binding event handlers.

+0

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

Смежные вопросы