我正在尝试在焦点结束时更新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功能不刷新,我不知道怎么做...
一点帮助将是欣赏:)
非常感谢。
答案 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);
即使它正在工作,似乎每次失去对输入的关注时,整个表单都会重新加载。