2012-11-04 3 views
1

В моем приложении я получаю JSON с местом от Google Maps API с помощью автозаполненияКак передать переменные из javascript в форму?

var place = autocomplete.getPlace(); 

я могу получить имя места с place.name На той же странице у меня есть форма, где я получаю еще детали от пользователя , Вопрос в том, как передать place.name моему контроллеру рельсов при отправке формы? В JS я пытался изменить HTML формы

<form...> 
<div id="hidden_fields"></div> 
</form> 

с использованием

$("#hidden_fields").append("<input name='name' type='hidden' value='"+place.name+"' />"); 

Но, видимо, это не работает. Должен ли я изучать AJAX, чтобы делать такие вещи или есть другие способы? Заранее благодарим за любой намек.

+0

Правильно ли они отображаются в HTML-коде? Возможно, попробуйте двойные кавычки для атрибутов HTML 'type =" hidden "' –

+0

$ ("# hidden_fields"). Append (" "); не добавляйте ничего в html, что странно, потому что $ ("# hidden_fields"). append ("

Я скрыт

"); как это должно быть – user1798125

+0

Вы пробовали смотреть на него с Firebug или аналогичным? (то, что покажет динамические записи DOM) –

ответ

0

Убедитесь, что вы создали скрытые поля после завершения автозаполнения. проверьте источники, если скрытые переменные были добавлены перед отправкой. Пока элемент управления доступен в теге формы перед отправкой, ваш контроллер сможет его получить.

+0

'View/Source' никогда не будет показывать динамически добавленный контент. Вам нужно будет заглянуть в инспектора DOM. – jfriend00

+0

Пожалуйста, см. Мой ответ Martin Lyne – user1798125

+0

Или firebug и т. Д. –

0

Спасибо всем! Проблема решена. Важными вещами, которые я узнал, были

  1. View/Source не показывает динамически добавленный контент, но Firebug делает.
  2. Rails изменить формы имена полей: Оказывается

<% = form_for @place сделать | F | ...

<% = f.password_field: пароль: класс => "Форма-поле",: идентификатор => "passwordField"

в

<input class="form-field" id="passwordField" name="place[password]" type="password" />

, что означает, что Я должен передать значение от JS таким же образом:

$text.append('<input name="place[name]" type="hidden" value="'+place.name+'"/>');

Надеется, что это поможет кому-е ЛСЭ.

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