2016-04-27 9 views
0

Ich denke, ich bin hier super stumpf, also habe ich eine Geige gemacht, warum ist es so, dass wenn ich einen anderen Radioknopf anschlage, es nicht überprüft wird?Optionsschalter einchecken JS funktioniert nicht?

In der Geige wird es laden mit der Taste für "diy" überprüft; Wenn Sie auf "Bezahlt" klicken, sehen Sie den Radiobutton, wenn die Warnung geladen wird, springen dann aber zurück, obwohl die JS-Anweisungen unabhängig in der Konsole funktionieren. Hilfe geschätzt! (BTW, habe ich versucht, zwei Möglichkeiten der Kontrolle, die beide gescheitert)

https://jsfiddle.net/gzf28hsk/

Dies ist die Funktion, die wahrscheinlich bricht, aber ich weiß nicht, wo

function populateLogistic(type, new_status = null) { 
    radio_paid = $('input[name="delivery"][value="paid"]') 
    radio_diy = $('input[name="delivery"][value="diy"]') 

    if (new_status === null) { 
     radio_paid.prop("checked", false) 
     radio_diy.prop("checked", true) 
    } else if (new_status == "paid") { 
     alert(new_status) 
     //radio_paid.checked = true 
     //radio_diy.checked = false 
     radio_paid.prop("checked", true) 
     radio_diy.prop("checked", false) 
    } else if (new_status == "diy") { 
     //radio_paid.checked = false 
     //radio_diy.checked = true 
     radio_paid.prop("checked", false) 
     radio_diy.prop("checked", true) 
    } 
} 
+0

Was genau wollen Sie hier tun? Was ist das Endziel? –

Antwort

1

zum change Ereignisse Hören statt .

aktualisieren

Eigentlich war das Problem, dass Sie e.preventDefault(); innerhalb der Event-Handler taten, das Ereignis und Verhängnis Cancelling der Klick.

Wie auch immer, es ist besser, das 10 Ereignis für Eingabeänderungen anzuhören, weil Sie sicher sind, dass sich der Wert tatsächlich geändert hat und weil er auch ausgelöst wird, wenn sich die Eingabe ohne Klicken ändert, zum Beispiel über die Tastatur.

Dieser sagte, können Sie (oder sollte) erhalten die gewählte Option mit $('input[name="delivery"]:checked').val() statt $(this).val()

+0

hat funktioniert, aber tut mir leid, kannst du das noch einmal erklären? Ich bin nicht ganz dabei – james

+0

Aktualisiert die Antwort – Gabriel

+0

oh interessant. Der 'e.preventDefault()' war da, um zu verhindern, dass der Knopfklick das Formular abschickte. interessant, dass es den Klick rückgängig gemacht hat und doch mit 'change' funktioniert – james