2017-10-06 169 views
1

我想在焦点不存在时更新simple_form。我做到了这一点,但我只能做到这一点,我无法找到如何使它适用于所有输入表单。 这里是我的代码:如何重新加载ajax而不刷新页面

<%= 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> 

'输入' 是指输入表单和#refresh是我分配给simple_form的ID。

所以我认为AJAX功能不刷新,我不知道该怎样办呢线索......

一点点的帮助,将感激:)

非常感谢。

回答

0

如果使用simple_form与远程真正可以使用此$('input').blur(function() { $.ajax({ type:"POST", url:$('#refresh').attr("action"), data:$('#refresh').serialize(), success: function(response){ console.log(response);
} }); });

+0

感谢您的快速回答。不幸的是,它仍然不起作用。但是,我已将所有日志记录在控制台中,所以我猜你已经非常接近了。 –

0

,试试这个:

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

希望这有助于。

+0

感谢您的回答!我使用远程真实,但仍然无法正常工作。 –

+0

@RaphaëlFOSSE你有没有检查日志,是否有任何请求发送? 如果还没有,我们可以通过console.log进行调试(“在blur回调函数中!”),以确保触发该操作。 :) – thanhnha1103

+0

是的,行动被触发,我有'回复帖子用户'。我只需要在不刷新页面的情况下尽可能多地按时完成它。 –

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); 

即使是工作,似乎整个窗体每次重新输入时都会重新加载。

相关问题