2010-11-30 23 views
0

在Ruby代碼的TextField中,我想檢查指定的類是否應用於blur事件。請提出一些技巧或方法。示例代碼在下面給出。ROR +從文本字段中檢測ClassName並將其替換爲另一個

紅寶石代碼的TextField ::

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

假設CLASS_NAME:「changeView」被上面文本框施加,然後我必須檢測到這個特定類&通過另一個如「changeExtraview」取代。通過使用任何JavaScript,我們可以替換該類名稱,但建議您是否有更好的選擇。

感謝

+0

這可能是Rails的代碼,而不是‘紅寶石代碼’ – PeterWong 2010-11-30 07:28:04

+0

雅哥們,其Rails代碼 – Rubyist 2010-11-30 07:42:06

回答

1

只是猜的答案...

所以你class_name可能包含changeView一個值,如果在的話,你要替換changeView類名changeExtraview,對不對?

如果是,那麼下面應該沒問題:

<%=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 %>在你的佈局文件,

相關問題