如何在不刷新页面的情况下重新加载ajax

时间:2017-10-06 08:15:22

标签: jquery ruby-on-rails ajax

我正在尝试在焦点结束时更新simple_form。我做了这个,但我只能做一次,我不知道如何使它适用于所有的输入形式。 这是我的代码:

<%= content_for :after_js do %>
<%= javascript_include_tag 'autocomplete-rails-custom' %>
<script>
var autocomplete_field = $('#user_job_name')

autocomplete_field.on('focus', function(){
  console.log('focus')
  var search = 'A'
  if (autocomplete_field.val() && autocomplete_field.val().length > 0) {
    search = autocomplete_field.val()
  }
  autocomplete_field.autocomplete( 'search', search )
})
$( document ).ready(function() {
  $('input').blur(function() {
    $('#refresh').trigger('submit.rails');
  });
});
</script>
<% end %>

来自simple_form的HTML:

  <%= simple_form_for user, remote: true, html: {class: 'full-width ', id: "refresh"} do |f| %>
<input type="hidden" name="page" value="admin">

输入如下:

<td class='float-label'>
 <%= f.input :first_name
   label: false %>
</td>

'input'表示输入表单,#refresh是我分配给simple_form的ID。

所以我认为ajax功能不刷新,我不知道怎么做...

一点帮助将是欣赏:)

非常感谢。

3 个答案:

答案 0 :(得分:0)

您可以使用此$('input').blur(function() { $.ajax({ type:"POST", url:$('#refresh').attr("action"), data:$('#refresh').serialize(), success: function(response){ console.log(response);
} }); });

答案 1 :(得分:0)

如果你使用带有远程true的simple_form,试试这个:

$('input').blur(function() {
  $('#refresh').trigger('submit.rails');
});

希望得到这个帮助。

答案 2 :(得分:0)

我找到了答案,但只能使用javascript,这不是我真正想要的,但这里是:

 var form = document.getElementById("refresh");

 form.addEventListener("focus", function( event ) {
 event.target.style.background = "pink";
 }, true);

form.addEventListener("focusout", function( event ) {
$('#refresh').trigger('submit.rails');
}, true);

即使它正在工作,似乎每次失去对输入的关注时,整个表单都会重新加载。