2010-11-23 8 views
10

Ich fange gerade an, Internetprogrammierung zu lernen.Warum senden HTML-Checkboxen nur einen 'on'-Wert?

Nachdem ich mit Checkboxen herumgespielt habe, habe ich auf die harte Tour herausgefunden, dass es nur wenn das Kontrollkästchen aktiviert ist, dass es einen 'Ein' Wert überträgt.

Warum nicht auch einen 'Aus'-Wert senden?

+1

jQuery behandelt dies so moronisch. '$ (''). val()' gibt dir '" on "'. – 2rs2ts

Antwort

9

Ich denke, es muss für die Kürze der Übertragung sein. Jede Anfrage an den Server wird "over the wire" gesendet, wenn Sie eine Seite mit Tausenden von Checkboxen darauf haben, werden Sie feststellen, dass die Menge der Daten, die dem Server "Diese Box ist aus" mitgeteilt wird, ziemlich groß ist So wie Sie den NAMEN jedes Checkbox-Elements senden müssten - das könnte zu Megabyte an Informationen addieren - was die gesamte Benutzererfahrung verlangsamen würde & Internet down).

Während Sie in der Tat wissen, dass es ausgeschaltet ist, weil es nicht gesendet wird - so brauchen Sie es nicht zu senden.

+6

Ich würde dieser Antwort nicht zustimmen. Der Vorteil für die Entwickler (imho) würde die Kosten für das Senden zusätzlicher Daten "over the wire" stark aufwiegen. Zum einen koppelt es Ihre HTML-Anzeige stark mit der Verarbeitungsseite (was ich für das größte Argument halte). Zweitens würde ich mir vorstellen (das ist nur eine Vermutung), dass die meisten Seiten nur eine vernünftigere Anzahl von Checkboxen verwenden, sagen wir 10 oder weniger, und diese Datenmenge ist vernachlässigbar. –

+1

Ich stimme auch nicht zu. Es gibt drei Zustände, wenn zum Beispiel 'GET'-Parameter verwendet werden. '? checked = on','? checked = off' oder '?'. Ein Kontrollkästchen kann entweder explizit aktiviert oder deaktiviert oder nicht gesetzt sein. Ich möchte den "Standard" einstellen, um an zu sein, aber nicht wissen, ob es aus ist oder nicht, wegen der Weise, die Formularübereinstimmungen eingereicht werden. Dies ist ein albernes Problem, das meiner Meinung nach nicht so umgesetzt werden sollte. –

+0

Ich stimme auch nicht zu, wenn Sie eine Seite mit Tausenden von Checkboxen benötigen würden, wie Sie vorschlagen? – developius

2

Der Standardstatus ist "deaktiviert" (oder deaktiviert, wie Sie es angeben), so dass diese Informationen nicht deklariert werden müssen.

+1

Nur um die Antwort von Damian zu adbetieren, könnte das Gegenteil auch der Fall sein, wenn es standardmäßig aktiviert war. – Blake

2

Wie für boolesche Werte üblich, wird davon ausgegangen, dass es deaktiviert ist. Es ist einfach zu überprüfen, hängt jedoch von Ihrer Sprache der Wahl ab. Gebrauchte PHP als eine Demonstration, können Sie überprüfen:

$myvar_enabled = (isset($_GET['myvar']) && $_GET['myvar'] == 'on'); 
18

Es ist möglich, viele Kontrollkästchen mit dem gleichen Elementnamen haben:

<form action="order.php" method="get"> 

    <p> 
    <label><input type="checkbox" name="toppings" value="olives"/>Olives</label> 
    <label><input type="checkbox" name="toppings" value="mushrooms"/>Mushrooms</label> 
    <label><input type="checkbox" name="toppings" value="onions"/>Onions</label> 
    <label><input type="checkbox" name="toppings" value="eggplant"/>Eggplant</label> 
    etc... 
    </p> 

    <p><input type="submit" value="Submit"/></p> 

</form> 

Die URL enthält das wird nur die geprüften Werte und etwas aussehen wie:

Dies hätte nicht gut funktioniert, wenn ein "Aus" -Wert gesendet wurde.

Verwandte Themen