2016-07-04 11 views
0
definiert

Ich habe eine Form der folgenden Merkmale:Rails Javascript onsubmit() Uncaught Reference validieren: validate nicht

= nested_form_for reservation, html: { onsubmit: "return validate()"} do ... 

und die folgende Datei reservation.js:

jQuery(function() { 
    $('div.modal').on('loaded.bs.modal', function(e) { 
    ...some code... 
    }); 
    $('div.modal').on('shown.bs.modal', function(e) { 
    ...some code... 
    }); 

    function validate(){ 
    var guests = 0; 
    $('.guests-input').each(function(i, e){ 
     guests = guests + $(e).val(); 
    }); 
    if (guests < 1){ 
     alert('Sum of percentage must be 100'); 
     return false; 
    } 
    return true; 
    } 
}); 

Aber, wenn Ich klicke auf die Senden-Schaltfläche Ich erhalte den Fehler:

Uncaught ReferenceError: validate is not defined

Ich weiß nicht, wo soll ich es definieren. Ich habe andere Fragen durchsucht, aber ich konnte mein Problem mit ihnen nicht lösen. Ich bin mir auch nicht ganz sicher, wo ich hinschauen soll.

Ich werde mit mehr Informationen bei Bedarf bearbeiten.

+1

Setzen Sie die 'validate()' -Funktionsdefinition außerhalb des document.ready-Handlers von jQuery. Oder noch besser, hängen Sie Ihre Event-Handler mit unauffälligen JS anstelle von veralteten 'on *' - Event-Attributen an. –

+0

Ich dachte, ich hätte das versucht, aber es scheint nicht, weil es jetzt funktioniert. Vielen Dank. –

Antwort

0

Wie Rory McCrossan über den Kommentar sagt, bestand die Lösung darin, die validate() - Definition außerhalb von jQuerys document.ready-Handler zu verschieben.

Verwandte Themen