2016-05-26 21 views
0

Ich habe eine Website, die ich derzeit sagen kann, wie viele Antworten aus den verschiedenen Dropdown-Menüs ausgewählt wurden. Jetzt möchte ich in der Lage sein, die Kommentare zu zählen, die im Textarea-Tag enthalten sind. Ich habe eine Geige für das, was ich im Grunde habe.Wie zähle ich die Anzahl der Kommentare, die auf meiner Website eingegeben wurden?

https://jsfiddle.net/josephmckenzie/Lr1evv3v/3/

Wenn Sie den Kommentar-Link klicken, wird es ein Akkordeon mit einem Kommentarfeld unter dem aktuellen Drop-Down öffnen und einmal eingegeben sie zur nächsten Frage gehen. Sie sollten beide hochzählen (Dropdown-Zähler funktioniert bereits), und wenn ein Kommentar in Verbindung mit der Menüauswahl eingegeben wird, sollte der Kommentar-Zähler ebenfalls mit zählen.

<div class="QuestionsAnswered"> 
summary<br> 
Total = <span class="cnt-total">0</span> <br> 
</div> 

<select name="firstone"> 
    <option value="">Choose One</option> 
    <option value="Yes">Yes</option> 
    <option value="No">No</option> 
    <option value="na">N/A</option> 
</select> 

<div class="accordion">Comment</div> 
    <div class="panel"> 
     <textarea name="comment<%=index%>" rows="4" cols="15"></textarea> 
    </div> 


<select name="secondone"> 
    <option value="">Choose One</option> 
    <option value="Yes">Yes</option> 
    <option value="No">No</option> 
    <option value="na">N/A</option> 
</select> 

die js

$('select').change(function() { 
// get all selects 
var allSelects = $('select') 
var total = 0; 

// for each select increase count 
$.each(allSelects, function(i, s) { 
    // increase count 
    if($(s).val() == 'Yes') { total++; } 
    if($(s).val() == 'No') { total++; } 
    if($(s).val() == 'na') { total++; } 
}); 

$('.cnt-total').text(total); 

}); 

var acc = document.getElementsByClassName("accordion"); 
var i; 

for (i = 0; i < acc.length; i++) { 
    acc[i].onclick = function(){ 
    this.classList.toggle("active"); 
    this.nextElementSibling.classList.toggle("show"); 
} 
}; 

Ich habe versucht, die wählen, um Textbereich und dem .val ändern! = Auf eine leere Zeichenfolge und ein paar andere Dinge, aber leider ich Ihnen Stapel kommen

+0

Aus Neugier, gibt es einen Grund, dass Sie jQuery für die 'select' Änderung, aber nicht für den Kommentarklick verwendet haben? – jwatts1980

+0

Nur weil Sie Ruby irgendwo in Ihrer App verwenden, wird die Frage nicht zu einer Ruby-Frage. Wenn Sie Ruby im Beispielcode verwendet haben, wäre es relevant, aber so wie es ist, und es ist eine Ablenkung. –

+0

@ jwatts1980 nein, merkte nicht, dass ich hntnt könnte ein Problem sein, da die Dropdowns nicht mit out jQuery –

Antwort

1

Stellen Sie sicher, dass "total" eine globale Variable ist, also nehmen Sie sie aus Ihrem $ (. 'Select'). Change (function()) (https://jsfiddle.net/Lr1evv3v/7/).

$("#the_answer").on("blur", function(){ 
$(this).val() ? total++ : total--; 
$('.cnt-total').text(total); //to update the total text 
}); 
+0

Im wirklich Verknüpfung dieser, aber nachdem Sie die erste Drop-Down-Auswahl zählen zählt es die nächste up zwei, Ill versuchen auf mein eigenes aber vielleicht können Sie mir helfen, dieses Problem zu beheben? –

+0

Nun ja, "$ .each (allSelects, function (i, s) {" iteriert jedes Mal, wenn sich einer der Dropdown-Werte ändert, ALLE Dropdown-Listen. Wenn also bereits ein Wert in den Dropdown-Listen ausgewählt wurde, wird dieser übernommen – rsn

+0

Ja, das macht Sinn, aber was ich meinte war ich wähle ja die erste Zählung ist 1 dann gebe einen Kommentar ein Anzahl ist 2 dann wenn ich zum zweiten Dropdown gehe springt es auf 4 –