ROR +从文本字段&中检测ClassName用另一个替换它

时间:2010-11-30 07:22:27

标签: javascript html css class

在Ruby Code的TextField中,我想在blur事件上检查是否应用了指定的类。请提出一些技巧或方法。以下给出了示例代码。

TextField ::

的Ruby代码
    <%=f.text_field :Username, :size=>4, :tabindex=>2, :class=>class_name, 
:autocomplete => "off", :onblur=> $$$$$ %>

假设class_name:'changeView'应用于上面的文本字段,那么我必须检测这个特定的类&amp;替换为另一个像'changeExtraview'。通过使用任何javascript,我们可以替换该类名称,但建议您是否有更好的选择。

由于

1 个答案:

答案 0 :(得分:1)

只是一个猜测的答案......

因此,您的class_name可能包含changeView的值,如果是这种情况,您希望将changeView类名替换为changeExtraview,对吗? / p>

如果是,那么以下内容应该没问题:

<%=f.text_field :Username, :size=>4, :tabindex=>2, :class=>class_name.gsub(/changeView/, "changeExtraview"), :autocomplete => "off", :onblur=> $$$$$ %>

========================

另一次尝试:

<%=
  f.text_field :Username, :size=>4, :tabindex=>2, :class=>class_name, :autocomplete => "off",
    :onblur => "if($(this).hasClass('changeView')) {$(this).removeClass('changeView'); $(this).addClass('changeExtraview')}"
%>

========================

正如@Faisal指出的那样,在JS方面使用绑定会更好。虽然答案很久以前,但我决定再次更新答案:

<%= f.text_field :Username, :size => 4, :tabindex => 2, :class => class_name, :autocomplete => "off" %>

在任何方面(我在本例中使用content_for),添加以下js代码:

<%= content_for :javascripts do %>
  <script type="text/javascript">
    jQuery(document).ready(function($) {
      $("<%= class_name %>").bind("blur", function() {
        var $this = $(this);
        if ($this.hasClass('changeView')) {
          $this.removeClass('changeView');
          $this.addClass('changeExtraView');
        }
      });
    });
  </script>
<% end %>

请注意,上述代码要求您在布局文件中使用<%= yield :javascripts %>