2016-04-19 18 views
2

Ich benutze Laravel mit einigen jQuery für eine Webapplikation. Wenn ich ein leeres Formular abschicke, werde ich zurück auf die Seite mit den alten Werten (form model binding) geleitet, was alles wie erwartet funktioniert.jQuery ausgewählten Wert immer 0

Das Problem liegt im jQuery Teil. Ich habe mehrere Abschnitte, die nicht angezeigt werden, wenn der Wert einer Funkgruppe 0 (deaktiviert) ist, und zeigte, wenn es zu 1 (überprüft) wechselt. Das funktioniert gut, wenn ich die Seite ausfülle, aber es passiert Fehler, wenn ich zurückleite, wenn ich einen Validierungsfehler im Formular habe.

Wenn ich einen Formularfehler habe, und ich werde auf die Seite mit den alten Werten zurückgeleitet und die ausgewählten Werte der Radio-Gruppen gelesen, sind alle Werte immer noch 0. Warum ist die val() 0 auch wenn Das Radio hat einen ausgewählten Wert von 1?

var r4 = $('input[name="configtype"]'); 
var s4 = $('#comprehensive'); 

initsec(r4, s4); 

function initsec(radio, togglesection){ 

    console.log(radio.val()); 

    //When being redirected back to the page with the radio selected at the value '1', 
    //console.log still shows 0 

    if (radio.val() == 1) 
     { 
      togglesection.toggle(); 
     } 
    } 

bearbeiten

var r4 = $('input[name="configtype"]:checked'); kann in dieser Situation nicht arbeiten, weil ich in anderen Orten in meinem Code, um das Funkfeld auch bin mit dem ich nicht nur den Wert geprüft bekommen sollte, aber statt der geprüfte Wert, vervielfältigen also nicht so weit wie ich weiß, (weil ich das var r4 = $('input[name="configtype"]:checked'); eine Million mal gelesen habe, aber das ist nicht möglich, in meinem Code)

+0

Mögliche Duplikat, um [Wie kann ich wissen, welche Radiobutton über jQuery ausgewählt?] (Http: // stackoverflow.com/questions/596351/how-can-i-know-which-radio-button-is-selected-via-jquery) – Koshinae

+0

@koshinae hat eine Bearbeitung durchgeführt, um zu erklären, warum ich den gegebenen Link nicht benutzen kann (weil ich hab das genau gelesen aber konnte die antwort nicht finden ;-)) – Markinson

Antwort

1

radio eine Menge aller Radioelemente ist nicht nur das überprüfte eine so Aufruf .val() wird th zurückgeben Der Wert des ersten Elements in der Menge.

Sie können .filter() verwenden nur die überprüften Artikel

console.log(radio.filter(':checked').val()); 

oder

var r4 = $('input[name="configtype"]:checked'); 
+0

Das hat funktioniert! Ich habe versucht, die zweite Option zu vermeiden, weil ich eine Variable ohne ': checked' verwenden musste, genau das, wonach ich suchte – Markinson

Verwandte Themen