【发布时间】:2011-05-14 17:44:50
【问题描述】:
我刚刚开始学习互联网编程。
在玩过复选框之后,我发现了一个困难的方法,即只有当复选框被选中时,它才会传输一个“开启”值。
为什么不同时发送一个“关闭”值?
【问题讨论】:
-
jQuery 如此愚蠢地处理这个问题。
$('<input type="checkbox" />').val()给你"on"。
我刚刚开始学习互联网编程。
在玩过复选框之后,我发现了一个困难的方法,即只有当复选框被选中时,它才会传输一个“开启”值。
为什么不同时发送一个“关闭”值?
【问题讨论】:
$('<input type="checkbox" />').val() 给你"on"。
我认为这一定是为了传输的简洁。如果您有一个带有数千个复选框的页面,则向服务器发送的每个请求都是“通过网络”发送的,您会发现告诉服务器“此框已关闭”的数据量实际上相当大(见就像您必须如何发送每个复选框元素的名称一样 - 这可能会增加数兆字节的信息 - 这会减慢整个用户体验和互联网速度)。
而事实上,您知道由于它没有被发送而关闭 - 所以没有必要发送它。
【讨论】:
GET 参数,则会出现三种状态。 ?checked=on、?checked=off 或 ?。复选框可以显式打开或关闭,或者根本不设置。我想将“默认”设置为打开,但由于表单复选框的提交方式,不知道它是否关闭或未设置。这是一个愚蠢的问题,在我看来不应该以这种方式实现。
可以有许多具有相同元素名称的复选框:
<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
如果同时发送“关闭”值,这将无法正常工作。
【讨论】:
作为典型的布尔值,它被假定为关闭。但是,检查起来很简单,这取决于您选择的语言。用PHP做示范,大家可以看看:
$myvar_enabled = (isset($_GET['myvar']) && $_GET['myvar'] == 'on');
【讨论】:
默认状态为“未选中”(或按您的说明关闭),因此无需声明该信息。
【讨论】: