JavaScript 作为加载 Rails 表单的条件?

标签 javascript css ruby-on-rails-3

我有一个带有 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,表单将无法工作,因为上面的表单只有一个 hidden_​​field 而没有可见的输入字段(输入字段是由标签内的插件创建的),我需要它才能工作在移动设备上没有 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> 

最佳答案

可以的,默认用css隐藏,启用js的时候给站点加一个class

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;
}

关于JavaScript 作为加载 Rails 表单的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9428542/

相关文章:

javascript - 如何在方表中找到一个数字所属的一组数字的索引?

jquery - 通过单击 anchor 切换 UL 的类别

ruby-on-rails - Rails 3,如何为项目添加操作

javascript - Angular 7为脚本标签添加自定义src

javascript - 将 objective-c 变量传递给 ios 中的 javascript

javascript - 在浏览器中获取源映射的源位置

css - 垂直纵横比媒体查询

jquery - 从 Bootstrap 切换中删除标签

javascript - 如何在没有javascript的情况下删除

ruby - 您如何禁止记录某个特定操作的日志记录?