2016-03-06 53 views
0

我在rails上使用ruby。我有一个使用form_for与textarea创建的窗体。当点击文本区域时,我希望textarea的高度变大。来自asp.net mvc背景,我会考虑添加一个onClick事件到文本区域,然后使用jquery将高度px添加到文本区域。我正在努力如何使用轨道做到这一点:如何在form_for textarea元素上触发onClick事件

<%= form_for(@person) do |f| %> 
    <%= f.label :name %> 
    <%= f.text_field :title, class: 'form-control' %> 
    <br/> 
    <div class="text"> 
     <%= f.text_area :notes, placeholder: "add notes here...", id: "tester"%> 
    </div> 
    <%= f.submit "Post", class: "btn btn-primary" %> 
<% end %> 

我已经设法添加一个id'test'到text_area。然后我把这个代码在的application.js文件:

$(document).ready -> { 
    $('#tester').bind('click', function() { 
     $('#tester').style.height = "200px"; 
    }); 
} 

我从Rails文档这里这样的想法:http://guides.rubyonrails.org/working_with_javascript_in_rails.html 然而,这似乎并没有在所有触发点击事件。这怎么能在rails中完成?注意:我对咖啡剧本不熟悉,宁愿使用香草js。

回答

0

我发现了答案。我的代码其实只是语法错误。下面是JavaScript代码的正确语法:

$(document).ready(function() { 
    $('#tester').bind('click', function() { 
     $('#tester').attr("rows", "15"); 
    }); 
}); 

我本来对的form_for是正确的

0

你的元素实际上并没有一个id“tester”。 Rails根据您正在处理的对象为它创建另一个ID。尝试将您的javascript中的$('#tester')更改为$('.text textarea'),我认为它会起作用。

+0

这没有奏效。但我也想这只是这个文本框不是所有的文本框,这就是为什么我想使用一个ID。我可以不申请和id到form_for text_area吗? – user2884789

0

绑定tester()函数的textareaonclick代码。当用户点击textarea时,tester()将被触发。

<%= f.text_area :notes, placeholder: 'add notes here...', onclick: 'tester()'%> 

$(document).ready(function() { 
    function tester() { 
    $(this).css('height', '200px'); 
    }); 
} 
+0

如果您可以添加关于您更改的内容以及为什么的解释将会很有帮助;-) – Carpetsmoker

+0

您可以编辑您的答案。点击编辑:-) – Carpetsmoker