2017-01-05 9 views
0

Ich möchte die Schaltfläche "Senden" deaktivieren, bis meine Eingabefelder ausgefüllt wurden. Ich bin neu bei Schienen und nicht so sehr bei JS und Kaffee. Ich habe versucht, diese Funktion auszuführen aber es geht nicht zur Arbeit. Ich habe auch versucht, auf Client-Seite zu validieren, aber konnte es nicht funktionieren, der Code übergibt, aber die Schaltfläche ist immer noch nicht aktiviert, auch wenn alle Felder ausgefüllt sind. Die Schaltfläche wird aus bestimmten Gründen weiterhin deaktiviert.Schaltfläche "Senden" deaktivieren, bis die Eingabefelder RAILS ausgefüllt wurden

Html.haml

= simple_form_for @post, html: { multipart: true } do |f| 
    - if @post.errors.any? 
     #errors 
      %h2 
       = pluralize(@post.errors.count, "error") 
       prevented this Post from saving 
      %ul 
       - @post.errors.full_messages.each do |msg| 
        %li= msg 

    .form-group 
     = f.input :title,:label => "Project Name", input_html: { class: 'form-control' } 

    .form-group 
     %label{:for => "Image"} image 
     %input#image.form-control-file{"aria-describedby" => "fileHelp", :type => "file"}/ 

    .form-group 
     %label{:for => "url-input"} Project Link 
     %input#url-input.form-control{:type => "url", :value => "https://"}/ 

    .form-group 
     %label{:for => "description"} Description 
     %textarea#description.form-control{:rows => "3"} 
     %small#descriptionHelp.form-text.text-muted Clear it up please 

    %button#add.btn.btn-info{:type => "submit", :disabled => "disabled" } submit 

Vielen Dank im Voraus.

+0

Verbergen Sie die Eingabeschaltfläche zunächst. Dann in Javascript schreiben Sie eine Funktion, die die Schaltfläche auf Änderungsereignis des Eingabefeldes anzeigen wird. – Ajit

Antwort

2

Sie können Javascript oder jquery verwenden, um diese Überprüfung zu verarbeiten.

$('#url-input, #description').on('blur keypress', function() { 
    var urlInputLength = $('#url-input').val().length; 
    var descriptionInputLength = $('#description').val().length; 
    if (urlInputLength == 0 || descriptionInputLength == 0) { 
    $('button').prop('disabled',true); 
    } else { 
    $('button').prop('disabled',false); 
    } 
}); 

So bestimmen Sie, welche Eingabeelement (e) erforderlich sind, bevor das Formular gesendet werden kann. Verwenden Sie diese Elemente, um ein Ereignis blur oder keypress hinzuzufügen. Verwenden Sie eine if-Anweisung, um festzustellen, ob die Schaltfläche aktiviert oder deaktiviert ist. Wenn die Länge der Eingabe leer ist (0), können Sie das Schaltflächenelement mithilfe der Methode .prop() deaktivieren. Wenn die Eingabe Text enthält, aktivieren Sie die Schaltfläche.

+0

Die Schaltfläche wird auch nach dem Füllen der Eingänge aus irgendeinem Grund weiterhin deaktiviert !! Der Code ist vorüber, aber ich glaube, dass ich entweder das JS nicht an der richtigen Stelle poste. Weil ich immer noch verwirrt bin, ob ich diesen Code in 'application.js' oder' posts.coffee' einfügen soll. Auch wenn ich beides ausprobiert habe und nichts hat funktioniert! – hekmat

+0

Auf '% button # add.btn.btn-info {: type =>" abschicken ",: disabled =>" disabled "} submit' Entfernen Sie': disabled => "disabled" '. Deaktivieren Sie außerhalb des 'keypress' und' blur' Ereignisses die Schaltfläche '$ ('button'). Prop ('disabled', true);'. Das ist jQuery, also geh einfach einen Kopf und platziere das in application.js. –

+0

Es tut mir leid, ich habe diesen Teil nicht verstanden. Deaktivieren Sie außerhalb des 'keypress' und' blur' Ereignisses die Schaltfläche '$ ('button') prop ('disabled', true);' – hekmat

Verwandte Themen