Ich habe mit meiner jQuery einige ungewöhnliche Ergebnisse erzielt und gehofft, dass mich jemand aufklären könnte, warum. Ich bin mir sicher, dass jQuery mächtig genug ist, um dies zu tun, also frage ich mich, was ich falsch mache. Folgendes habe ich (einige scheinbar einfache und leicht verständliche Codes):

///////////reset default search entries/////////////
$("#sOrderByDLM").attr('checked', 'checked');
$("#sOrderByID").attr('checked', '');
$("#sOrderByPOIName").attr('checked', '');
$("#sOrderByAge").attr('checked', '');
$("#sOrderByOfficer").attr('checked', '');

$("#sOrderByDesc").attr('checked', 'checked');
$("#sOrderByAsc").attr('checked', '');

Ich habe dies in einer einfachen JavaScript-Funktion, die beim Klicken auf eine (normale) Schaltfläche vom Typ "Nicht senden" aufgerufen wird. Das Problem ist, dass wenn ich darauf klicke, anstatt das Optionsfeld sOrderByDLM auszufüllen, tatsächlich die Schaltfläche sOrderByOfficer ausgefüllt wird und ebenfalls mit den beiden unteren jQuery-Anweisungen (z. B. sOrderByAsc wird ' checked 'anstelle von sOrderByDesc) Sage ich jQuery nicht offen, das Attribut' checked 'auf das des zweiten Arguments zurückzusetzen, das leer ist, außer in den Fällen, in denen ich es speziell festgelegt habe es auf 'checked' für die Felder, die ich als Standard festlegen möchte?

Ich hatte ein ähnliches Problem mit Kontrollkästchen, aber ich fand eine Lösung, indem ich einfach dieselben Anweisungen in umgekehrter Reihenfolge aufrief, aber das scheint hier nicht zu funktionieren. Wenn ich 'checked="checked"' in Rasiermesser setze, ist alles in Ordnung, aber ich brauche diese Schaltfläche, um auf der Clientseite zu arbeiten.

Wie auch immer, wenn der HTML-Code erforderlich ist, werde ich ihn bereitstellen, aber ich bezweifle, dass er benötigt wird, da ich die IDs dreimal überprüft habe, um sicherzugehen.

Danke für jede Hilfe!

(Und Gott segne den Stapelüberlauf, ich weiß nicht, was ich ohne dich tun würde !: D)

AKTUALISIEREN:

                    <tr>
                        <td class="orderlineupColor"><label for="sOrderByDLM">Date Last Modified</label><br/><input type="radio" id="sOrderByDLM" name="sOrderBy" style="margin-left: 115px;" value="OrderByDLM" @OrderByFiller[0] /></td>
                        <td class="orderlineupColor"><label for="sOrderByID">Entry ID</label><br/><input type="radio" id="sOrderByID" name="sOrderBy" style="margin-left: 115px;" value="OrderByID" @OrderByFiller[1] /></td>
                        <td class="orderlineupColor"><label for="sOrderByPOIName">POI Name</label><br/><input type="radio" id="sOrderByPOIName" name="sOrderBy" style="margin-left: 115px;" value="OrderByPOIName" @OrderByFiller[2] /></td>
                        <td class="orderlineupColor"><label for="sOrderByAge">Age</label><br/><input type="radio" id="sOrderByAge" name="sOrderBy" style="margin-left: 115px;" value="OrderByAge" @OrderByFiller[3] /></td>
                        <td class="orderlineupColor"><label for="sOrderByOfficer">Officer</label><br/><input type="radio" id="sOrderByOfficer" name="sOrderBy" style="margin-left: 115px;" value="OrderByOfficer" @OrderByFiller[4] /></td>
                    </tr>
                    <tr>
                        <td class="orderlineupColor2">In Descending Or<br/>Ascending Order:</td>
                        <td class="orderlineupColor2"><label for="sOrderByDesc">Descending Order</label><br/><input type="radio" id="sOrderByDesc" name="sAscOrDesc" style="margin-left: 115px;" value="OrderByDesc" @OrderByAscOrDescFiller[0] /></td>
                        <td class="orderlineupColor2"><label for="sOrderByAsc">Ascending Order</label><br/><input type="radio" id="sOrderByAsc" name="sAscOrDesc" style="margin-left: 115px;" value="OrderByAsc" @OrderByAscOrDescFiller[1] /></td>
                        <td class="orderlineupColor2"><button type="button" class="smallbtn" onclick="clearSortEntries()">Reset Sort Entries</button></td>
                        <td class="orderlineupColor2"></td>
                    </tr>
0
VoidKing 10 Okt. 2012 im 00:43

4 Antworten

Beste Antwort

Versuchen Sie es mit bools und .prop()

$("#sOrderByDLM").prop('checked', true); // To check

$("#sOrderByID").prop('checked', false); // To Uncheck
3
Sushanth -- 9 Okt. 2012 im 20:50

Es gibt einen Unterschied zwischen .attr() und .prop()

aaa

-1
RASG 9 Okt. 2012 im 20:50

Wenn Sie 'checked' und '' verwenden möchten, verwenden Sie die Funktion removeAttr jquery, anstatt dem Attribut checked ein Leerzeichen '' zuzuweisen, aber ich bevorzuge dieses nicht. Da das Zuweisen von wahr und falsch für mich symmetrischer aussieht als das Zuweisen von geprüften und entfernten Attributen.

$("#sOrderByDLM").attr('checked', 'checked');

$("#sOrderByID").removeAttr('checked');

Verwenden Sie true oder false anstelle von 'checked' und ''

$("#sOrderByDLM").attr('checked', true);

$("#sOrderByID").attr('checked', false);
1
Adil 9 Okt. 2012 im 20:59

Versuchen Sie zum Deaktivieren:

$("#sOrderByAsc").removeAttr('checked', '');

checked und selected sind binäre Eigenschaften, nicht wahr / falsch Attribute.

$("#sOrderByDLM").attr('checked', 'checked'); ist korrekt.

So ist: .attr('selected', 'selected');

1
Diodeus - James MacFarlane 9 Okt. 2012 im 20:45