2010-02-26 13 views
20

ich ein JQuery verwenden möchten „überprüfen Sie alle“ -Funktion in einer Form wie folgt aus: http://jetlogs.org/jquery/jquery_select_all.htmljquery - wählen Sie alle Kontrollkästchen mit js Array-Name

Mein Problem ist, ich meine Form aus einem PHP-Skript bin zu erzeugen und ich Ich weiß nicht genau, wie viele Checkboxen ich im Voraus haben werde. ich die „Array“ verwenden Namenskonvention zu können, erhalten alle ausgewählten Kontrollkästchen Werte in meinem $ _POST Daten ... so sind meine Kontrollkästchen wie folgt aus:

<input type="checkbox" name="items[]" value="<?php echo $id ?>"> 

aber diese JQuery Erklärung nicht funktioniert:

$("input[@name=items[]]").each(function()  
{  
    this.checked = checked_status;  
}); 

wahrscheinlich, weil die "[]" am Ende meiner "Artikel" vermasselt die JQuery Erklärung ... ich versuchte @ Namen schreiben = Artikel [] wie folgt aus: „@ name = Artikel [] "und einen Schrägstrich vor die [und] setzen, damit sie nicht als Sonderzeichen betrachtet werden, aber es hat nicht funktioniert ...

Wenn jemand eine Lösung kennt und bereit ist, sie zu teilen, wäre das großartig !! :)

+0

Versuchen Sie mit der Klasse und jQuery Build in der Suchmaschine wird die Arbeit für Sie erledigen, anstatt alle Elemente mit der for-Schleife zu loopen! – Kennethvr

+0

Was ist der Wert von checked_status? Wo findet es statt? –

Antwort

51

Escape interne Klammern mit \\ (kein Leerzeichen) - es sollte das Problem beheben.

Dieser Selektor funktioniert für mich:

$('input[name=items\\[\\]]') 
+0

Nein, das funktioniert nicht, wie ich in meinem Post sagte: "... und etwas anti-Schrägstrich (= \) vor dem [und] so ..." – Piero

+0

check my edit - Sie sollten @ von Ihrem entfernen Selektor und verwenden Sie doppelte Backslashes – rochal

+0

YupYup !! Klappt wunderbar! Danke an alle für Ihre Hilfe! Die anderen vorgeschlagenen Lösungen könnten auch funktionieren! Aber dieser scheint am einfachsten zu implementieren! :) – Piero

4

Zunächst einmal sollten Sie Ihren Namen Attribut verwendet werden +1 Elemente mit dem gleichen Namen zu setzen. Es ist praktisch das gleiche wie das ID-Attribut und sollte für jedes Element mit Ausnahme von Referenzen eindeutig sein, aber das ist nicht der Fall für Sie.

Versuchen Sie mit dem Klassenattribut, es ist für die Dinge gemacht, die Sie tun möchten! Eine andere Sache ist, dass Sie in Ihrem Code nur Ihre Checkboxen auf "checked" setzen können, aber niemals deaktivieren, setzt dieser Code Ihre checkboxes auf checked true oder false, je nachdem, was er als Attribut vom clicked erhält Element.

Sie etwas tun können:

stellen Sie Ihren Scheck alle Kontrollkästchen mit einem id

<input type="checkbox" id="checkAll"> 

dann auf alle Kontrollkästchen gesetzt, die geprüft werden soll/ungeprüft eine Klasse

<input type="checkbox" class="checked"> 

Und Sie können so etwas in jQuery

tun

dies wird alle Kontrollkästchen mit Klasse auf das gleiche Attribut checked wie die mit ID CheckAll

+0

hat mir mit der jquery-Funktion geholfen, danke! – noname

8

Versuchen Sie es mit

$('input[name="items[]"]') 

Keine Notwendigkeit " für @ und verwenden geprüft ändern. Beachten Sie, dass die Auswahl außerhalb von Anführungszeichen ' ist. Andernfalls könnten Sie einen Parse-Fehler verursachen.

+0

Danke, @Emo. Es hat funktioniert. Der Ansatz der angenommenen Antwort mit doppelten umgekehrten Schrägstrichen funktioniert nicht (scheint neue Versionen werden es nicht unterstützen). – Rolice

1
$("input[name='smsid[]']") 

Dieser Code funktioniert gut für mich ...

+2

Wenn Sie erklären, warum Ihre Antwort funktioniert hat, wird Ihr Beitrag hilfreicher. –

Verwandte Themen