2010-11-23 16 views
10

私はちょうどインターネットプログラミングを学び始めています。なぜHTMLチェックボックスは「オン」値のみを送信するのですか?

チェックボックスを使用して遊んだあと、「オン」値が送信されていることがチェックボックスでチェックされていることがわかりました。

「オフ」値も送信しないでください。

+1

jQueryはこれを非常に愚かに扱います。 '$( '')。val()'はあなたに ''を与えます。 – 2rs2ts

答えて

9

私はそれが伝送の簡潔さのためでなければならないと思う。何千ものチェックボックスがあるページを持っている場合、サーバーへの各リクエストは「ワイヤー越え」で送信されます。サーバーに「このボックスはオフです」と言うデータの量は実際かなり大きいどのように各チェックボックスの要素の名前を送信する必要がありますか - それはメガバイトの情報を追加する可能性があります - これはユーザーエクスペリエンス全体を遅くします&インターネットダウン)。

実際、あなたはを知っています。は送信されていないのでオフです - 送信する必要はありません。

+6

私はこの答えに同意しません。開発者(imho)にとってのメリットは、「ワイヤー上の」余分なデータを送信するコストを大幅に上回るでしょう。一つは、あなたのHTML表示を処理ページに大きく結びつけることです(これは最大の議論です)。 2番目に、ほとんどのページでは、より妥当な数のチェックボックス、たとえば10以下を使用することが考えられます(これは単なる推測です)。このデータ量はごくわずかです。 –

+1

私も同意しません。 'GET'パラメータを使用すると、例えば3つの状態があります。 '?checked = on'、'?checked = off'または '?'のいずれかです。チェックボックスは、明示的にオンまたはオフのいずれかに設定できます。私は "デフォルト"をオンにしたいが、フォームチェックボックスが出される方法のためにオフになっているのか、設定されていないのか分からない。これは私の意見ではこのように実装すべきではないはずの愚かな問題です。 –

+0

私は同意しません。あなたが何千ものチェックボックスを備えたページを必要とするのはいつですか? – developius

2

デフォルトの状態は「チェックされていません」(または状態が消えている)ので、その情報を宣言する必要はありません。

+1

ad @ Damienの答えにちょうど、それがデフォルトでチェックされていれば、その逆も真である可能性があります。 – Blake

2

ブール値の典型的なものとして、オフと推定されます。しかし、あなたの選択した言語に依存しているかどうかを確認するのは簡単です。デモンストレーションとして使用PHP、あなたがチェックすることができ:

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

を同じ要素名で多くのチェックボックスを持つことが可能です:

<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> 

urlは、後にのみ確認された値が含まれますし、何かを見ていきます次のようになります。

order.php?toppings=mushrooms&toppings=onions&toppings=eggplant 

「オフ」値が送信された場合、これはうまく機能しません。

関連する問題