rails视图中的文本区域在js中返回null

时间:2014-11-30 14:33:05

标签: javascript jquery ruby-on-rails-4 codemirror

Rails 4.我有一个视图,其中包含以下代码,其中我在textarea中输入并希望将代码镜像模式应用于代码到文本区域2.不幸的是我无法读取文本的内容区域1.即使我在文本区域1中粘贴代码并点击提交按钮,当我在JS文件中收到它时,它总是为空。

categories / show.html.erb:

<div id="ccontainer">
<div class="hero-spacer">
  <%= text_area_tag :cols => "30", :rows => "10", :id => "myText", :class => "editor1-pane" %> 
  <%= text_area_tag :cols => "30", :rows => "10", :id => "myText2", :class => "editor2-pane" %>  

  <%= button_to_function "✓", '$(this).toggleClass("buttonGrey buttonGreen");', :class => "buttonGrey" %>
 </div>

 </div>

categories.js有:

$(document).ready(function () {

   $(".buttonGrey").on("click", function() {

       alert("Confirmed"+ $('#myText')); <--- Always returning null
       console.log($('.editor1-pane'));
       if(document.getElementById("myText").value == null){
           alert('NULL >>');
         }
       var myCodeMirror = CodeMirror.fromTextArea(document.getElementById('myText'), {
            lineNumbers: true,
            matchBrackers: true,
            styleActiveLine: true,
            theme: "eclipse",
            mode: { name: "xml", htmlMode: true }
         }
       );
     // do something
       document.getElementById("myText2").value = myCodeMirror.getValue();
   }) 
 });

我不知道自己做错了什么!

1 个答案:

答案 0 :(得分:1)

Rails希望text_area_tag后跟name, content, options,但您刚刚提供了选项。

因此,Rails不是将“myText”指定为id,而是将整个选项列表分配为name(检查HTML输出以查看此内容),而不是设置任何选项。因此,你的jQuery选择器找不到任何东西。

试试这个:

<%= text_area_tag "myText", nil, :cols => "30", :rows => "10", :class => "editor1-pane" %>

这应该将文本区域的ID和名称设置为“myText”并正确设置选项。