0

我正在尝试从主视图表单执行 JavaScript,当我单击渲染部分中的复选框时,从渲染部分执行 JavaScript,但 JavaScript 不执行。仅当我在主视图中复制部分内容时才会执行。我已经搜索了该网站,但我无法得到答案。这就是我所拥有的,例如:

app/views/people/_main_form.html.erb

<script>
  view something in partal
  $('people_visible_by_default').click(function(){
    alert("Can you see me");
  });
</script>

<%= bootstrap_nested_form_for @people, html: { class: 'form-horizontal', id: 'people_edit_form' } do |f| %>
   <%=  render partial: 'form_partial', locals: { f: f } %>
<% end %>

在 app/views/people/_form_partial.html.erb 中执行的复选框

<%= f.check_box :visible_by_default, data: { preview_type: 'none' } %>

clicking on the visible_by_default checkbox doesn't show the alert as I expected.  How do I get it to execute when it is in the main_form.html.erb
4

2 回答 2

0

我猜你在 jQuery 中使用 checkbox("people_visible_by_default") 的 id 作为选择器。但是你忘了在它前面加上“#”。

所以,试试

$('#people_visible_by_default').click(function(){
  //your code
});

或者

$('#your_form_ID').on('click', '#people_visible_by_default', function(){
  //your code
});
于 2013-08-02T04:48:57.827 回答
0

首先,您应该使用加载主页时拥有的选择器。Js 在加载主页面时迭代 dom 元素。因此,如果您按事件渲染某些内容(页面加载开始时不存在的内容),则没有 js 处理程序。但是您可以使用渲染部分的父元素的选择器。例如:

view.html.slim

.parent_class
  = bootstrap_nested_form_for @people, html: { class: 'form-horizontal', id: 'people_edit_form' } do |f| 
   =  render partial: 'form_partial', locals: { f: f } 

view.js.coffee

$('.parent_class').on 'click', '#people_visible_by_default', (e) ->
  do something 

尝试这个。我希望它会帮助你

于 2018-10-14T08:56:54.147 回答