Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery DOM操作和事件触发器_Javascript_Jquery_Html_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Javascript JQuery DOM操作和事件触发器

Javascript JQuery DOM操作和事件触发器,javascript,jquery,html,ruby-on-rails,ruby-on-rails-4,Javascript,Jquery,Html,Ruby On Rails,Ruby On Rails 4,我正在尝试为一个新的rails应用程序构建一个简单的就地编辑功能。为此,我需要更改以保存数据 如何从顶部获取div信息并将其输入到我的隐藏表单:内容中以保存我的在位编辑更改 我当前的show.html页面如下 <p id="notice"><%= notice %></p> <div id="body_editable" class="editable"> <%= @article.content %> </div>

我正在尝试为一个新的rails应用程序构建一个简单的就地编辑功能。为此,我需要更改以保存数据

如何从顶部获取div信息并将其输入到我的隐藏表单:内容中以保存我的在位编辑更改

我当前的show.html页面如下

<p id="notice"><%= notice %></p>

<div id="body_editable" class="editable">
  <%= @article.content %>
</div>

<%= form_for(@article) do |f| %>
  <%= f.label :content %><br>
  <%= f.hidden_field :content %>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

<script>
  var editor = new MediumEditor('.editable');
</script>
但我不知道如何使用rails提交按钮触发保存事件,请尝试:

 $('select your submit').click(function(e){
     e.preventDefault();
     $('#article_content').val(editor.serialize().body_editable.value);
     $(this).closest('form').submit();
 });

虽然Alex的答案可行,但更安全的做法是:

$('form[for=article]').submit(function(e){
  e.preventDefault();
  $('hidden-field').val($('#body_editable').text());
  $(this).submit();
});

通过这种方式,它可以获取特定的元素并避免内存泄漏,方法是使用返回值的函数,而不是获取本机值,当您将内容设置为
someElement时,本机值会在内存中分配一个新地址。value

捕获表单的提交事件,复制该值,然后提交()

大概是这样的:

$('form[id^="edit_article"]').on('submit', function(e) {
  e.preventDefault();
  $('#article_content').val(editor.serialize().body_editable.value);
  $(this).submit()
  return false;
});

一个更具描述性的标题会更好。抱歉@jthomas,我开始键入,在困惑中再也没有返回到标题中正确解释。我尝试将其输入到articles.js中,有很多变体,但它仍然提交当前的articles.content,而没有切换它。我已经使用rails一段时间了,但对javascript知之甚少。我甚至不知道提交按钮是否触发了js。如何将submit按钮绑定到javascript?
$()。submit(回调)
将处理在
type=submit
时点击submit按钮,以及在焦点表单上点击enter按钮的情况。
$('form[id^="edit_article"]').on('submit', function(e) {
  e.preventDefault();
  $('#article_content').val(editor.serialize().body_editable.value);
  $(this).submit()
  return false;
});