Javascript ROR+;从文本字段检测类名(&A);换一个

Javascript ROR+;从文本字段检测类名(&A);换一个,javascript,html,css,class,Javascript,Html,Css,Class,在Ruby代码的TextField中,我想在blur事件中检查是否应用了指定的类。请提出一些技巧或方法。下面给出了我使用的示例代码 TextField:的Ruby代码: <%=f.text_field :Username, :size=>4, :tabindex=>2, :class=>class_name, :autocomplete => "off", :onblur=> $$$$$ %> 4,:tabindex=>2,:class=>c

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

TextField:的Ruby代码:

    <%=f.text_field :Username, :size=>4, :tabindex=>2, :class=>class_name, 
:autocomplete => "off", :onblur=> $$$$$ %>
4,:tabindex=>2,:class=>class\u name,
:autocomplete=>“off”,:onblur=>$$$$$%%>
假设在上面的文本字段上应用了class_name:'changeView',那么我必须检测这个特定的类并替换为另一个类,如'changeExtraview'。通过使用任何javascript,我们都可以替换该类名,但建议您是否有更好的选择


谢谢

只是一个猜测的答案

因此,您的
类名
可能包含
changeView
的值,如果在这种情况下,您希望将
changeView
类名替换为
changeExtraview
,对吗

如果是,则应符合以下条件:

<%=f.text_field :Username, :size=>4, :tabindex=>2, :class=>class_name.gsub(/changeView/, "changeExtraview"), :autocomplete => "off", :onblur=> $$$$$ %>
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')}"
%>
4,:tabindex=>2,:class=>class\u name,:autocomplete=>“关闭”,
: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" %>
4,:tabindex=>2,:class=>class\u name,:autocomplete=>“off”%>
并且以任何方式(我在本例中使用content_)添加以下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 %>

jQuery(文档).ready(函数($){
$(“”)。绑定(“模糊”,函数(){
var$this=$(this);
if($this.hasClass('changeView')){
$this.removeClass('changeView');
$this.addClass('changeExtraView');
}
});
});

注意,上面的代码要求您在布局文件中有

这可能是rails的代码,而不是“Ruby code”,它的rails代码这是一个javascript问题,不是rails问题。检查字段模糊是客户端的问题,RoR在这方面帮不了你。重新标记以反映这一点。@PeterWong::嘿,伙计,在页面加载时,changeView将是该文本字段的类,但在模糊事件发生时,我想将类名设置为changeExtraview。我同意你的看法。但是在ROR中是否可能,那么这很好,否则我必须使用Javascript!!.hasClass不是一个函数,这是您想要的答案,但是我会通过删除侵入性javascript部分来增强它。不要将代码添加为字段的属性。为字段指定一个类或ID,并绑定一个javascript事件来更改该字段的css类。@Rahul Patil,
hasClass
是一个jQuery函数@费萨尔,我同意你的观点。在rails代码中编写内联javascript肯定会让代码难看。