Ich habe eine Site mit CPT (kurz für benutzerdefinierten Beitragstyp) "bagp_deals" und benutzerdefinierten Taxonomien "ba_locations" und "ba_cats". Grundsätzlich ist der Beitragstyp "Deals" mit "Location" und "Categories" als hierarchischen Taxonomien. Auf dem Standard-Bearbeitungsbildschirm möchte ich die Auswahl auf jeweils nur einen beschränken (einen Ort und eine Kategorie) und ich versuche dies mit JQuery zu tun. Ich stelle fest, dass die benutzerdefinierte Taxonomie für ba_locations im Feld "tax_input [ba_locations] heißt. [] "und bis jetzt habe ich diesen Code:
jQuery("input[name=tax_input[ba_locations][]]").click(function () {
selected = jQuery("input[name=tax_input[ba_locations][]]").filter(":checked").length;
if (selected > 1){
jQuery("input[name=tax_input[ba_locations][]]").each(function () {
jQuery(this).attr("checked", false);
});
jQuery(this).attr("checked", true);
}
});
Es wird angenommen, dass die Auswahl der Kontrollkästchen auf eins beschränkt ist. Aus irgendeinem Grund kann ich das nicht zum Laufen bringen.
Die Frage
Die Frage ist also, warum das nicht funktioniert. oder haben Sie eine bessere Lösung, um die Auswahl auf nur eine zu beschränken?
Jede Hilfe wird geschätzt.
aktualisieren:
Dies ist der Arbeitscode, den ich verwendet habe:
jQuery("input[name=\"tax_input[ba_locations][]\"]").click(function () {
selected = jQuery("input[name=\"tax_input[ba_locations][]\"]").filter(":checked").length;
if (selected > 1){
jQuery("input[name=\"tax_input[ba_locations][]\"]").each(function () {
jQuery(this).attr("checked", false);
});
jQuery(this).attr("checked", true);
}
});
quelle
Antworten:
Anstatt es mit jQuery zu hacken, wäre eine zuverlässigere Lösung, die Meta-Box in PHP durch Ihre eigene zu ersetzen.
Wie auch immer, das Problem liegt höchstwahrscheinlich bei den Zeichen '[' und ']' in der Auswahl:
könnte umgeschrieben werden als
Siehe /programming/2786538/need-to-escape-a-special-character-in-a-jquery-selector-string
quelle
Ich habe eine PHP-Lösung für Sie:
quelle
Ich bin mir nicht sicher, ob Sie jemals eine Lösung dafür gefunden haben, aber ich musste das Gleiche tun. Ich nahm Ihre jQuery und fügte Zitate für den Namen hinzu + entkam ihnen. Scheint gut für mich zu funktionieren, also danke für die ursprüngliche jQuery :)
Meine Taxonomieeingabe hieß location und nicht ba_locations.
quelle
Dies ist, was ich in meine Funktionen geworfen habe, aber ich scheine nicht die erwarteten Ergebnisse zu erzielen.
quelle
Eine vereinfachte Version der PHP-Lösung von @sviryatko :
und
quelle