2017-10-06 4 views
1

Ich versuche, ein simple_form zu aktualisieren, wenn der Fokus aus ist. Ich habe das gemacht, aber ich kann es nur einmal tun und ich kann nicht herausfinden, wie man es auf alle Eingabeformen anwenden kann. hier ist mein Code:Wie man Ajax neu lädt, ohne die Seite zu aktualisieren

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

Und der HTML-Code aus dem simple_form:

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

Mit Eingabe wie folgt aus:

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

'Eingang' mit dem Eingabeformular und #refresh bezieht, ist eine ID, die ich dem simple_form zuweise.

Ich denke also, die Ajax-Funktion aktualisiert nicht, und ich habe keine Ahnung, wie es zu tun ...

Eine wenig Hilfe :)

Vielen Dank schätzen würde.

Antwort

0

Sie dieses $('input').blur(function() { $.ajax({ type:"POST", url:$('#refresh').attr("action"), data:$('#refresh').serialize(), success: function(response){ console.log(response);
} }); });

+0

Danke für Ihre schnelle Antwort. Leider funktioniert es immer noch nicht. Allerdings habe ich alle Logs in meiner Konsole, also denke ich, du warst ziemlich nah dran. –

0

verwenden Wenn Sie simple_form verwenden mit Fernbedienung wahr, versuchen Sie dies:

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

Hope this Hilfe.

+0

Danke für Ihre Antwort! Ich benutze Remote-True, aber immer noch nicht funktioniert. –

+0

@ RaphaëlFOSSE Haben Sie das Protokoll überprüft, gibt es eine Anfrage gesendet? Wenn noch nicht, können wir durch console.log ("innerhalb der Blur-Callback-Funktion!") Debuggen, um sicherzustellen, dass die Aktion ausgelöst wird. :) – thanhnha1103

+0

Yup, die Aktion wird ausgelöst, ich habe 'Response Post User'. Ich kann es so oft machen wie ich möchte, ohne die Seite zu aktualisieren. –

0

ich eine Antwort gefunden habe, sondern nur durch Javascript verwenden, die nicht wirklich das, was ich gesucht habe, aber hier ist es:

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

Auch wenn es funktioniert, Es scheint, dass das gesamte Formular wird jedes Mal neu geladen, wenn es den Fokus auf eine Eingabe verloren hat.

Verwandte Themen