JavaScript как условие загрузки Rails формы? - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть форма с требованием к плагину Jquery, которая создает поле ввода формы с типом стиля автозаполнения в Facebook:

<%= javascript_include_tag "form_prettify_library" %>

<div class="box">
  <ul id="first_form" class="tagit">
      <li class="prettify-new"></li>
  </ul>
    <%= form_for @brand do |f| %>
    <%= f.hidden_field :tag_list, :value => @brand.tags_from(current_user).join(", "),
                                  :id => "mytaglist" %>
    <%= f.submit "Add tags" %>
    <%= f.error_messages %>
    <% end %>
</div>

Работает хорошо, однако без JavaScript форма не работаетработать, потому что форма выше имеет только скрытое поле и нет видимого поля ввода (поле ввода создается плагином внутри тегов), и мне нужно, чтобы это работало без JavaScript на мобильных устройствах.Есть ли способ показать код выше, если загружен JavaScript, иначе код ниже будет отображаться, если это не так?

<div class="box">
  <%= form_for @brand do |f| %>
    <%= f.label :tag_list, "Your tags" %>
    <%= f.text_field :tag_list, :value => @brand.all_tags_list %>
    <%= f.submit "Add tags" %>
  <% end %>
</div> 

1 Ответ

3 голосов
/ 24 февраля 2012

Да, используйте css, чтобы скрыть его по умолчанию, и добавьте класс на сайт, когда включен js

html

<body class="no_js">
<script type="text/javascript">
(function() {
   var body = document.getElementsByTagName("body")[0];
   body.className = body.className.replace(/\bno_js\b/, " js ")
}())
</script>

css

.no_js .jsForm,
.js .no_jsForm  {
   display:none;
}

.js .jsForm,
.no_js .no_jsForm  {
   display: block;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...