一个数值保存复选框的值

一个数值保存复选框的值


前言

在开发过程中,对于网页中的多选,我们有很多种存储方式。下文介绍一种通用设计方式。


准备知识 —— 位与运算

位与运算:二进制运算,相同位的两个数字都为1,则为1;若有一个不为1,则为0,如:

   00101
&  11100
------------
   00100

设计

将多项的选项值分别设置为 2 的 n 次方,n 从 0 开始,每多一项,n + 1。即 1,2,4,8…
多选的存储值为各项值之和,如选中了第 1、3 项,则值为:1 + 4 = 5


回显

假设存储的值为 5 ,要使相应的项被勾选,则是循环多项的值,每项与存储值 5 进行 位与运算,如果值与选项本身的值相等,则选中该项;相反地,如果运算值为 0 ,则设置为不选中:

1 & 5 = 1
2 & 5 = 0
4 & 5 = 4
8 & 5 = 0

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Checkbox Test</title>
</head>
<body>

<form>
    <input type="checkbox" name="test" value="1"> 1
    <input type="checkbox" name="test" value="2"> 2
    <input type="checkbox" name="test" value="4"> 4
    <input type="checkbox" name="test" value="8"> 8
</form>

<input type="text" id="result" placeholder="设置要回显的值">
<button id="show">回显</button>

<script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<script>
    $(function () {
       $("[name='test']").on("change", function () {
           var result = 0;
           $("[name='test']:checkbox:checked").each(function(){
               result += parseInt($(this).val());
           });
           $("#result").val(result);
       });

       $("#show").on("click", function () {
           var result = parseInt($("#result").val());
           $("[name='test']:checkbox").each(function(){
               var value = parseInt($(this).val());
               if ((result & value) == value) {
                   $(this).prop("checked", true);
               } else {
                   $(this).prop("checked", false);
               }
           });
       });
    });
</script>
</body>
</html>

总结

这种做法之前就已经见过,但是看完就忘了,故写下此文已作记录。
养成位运算的思维方式,对设计有一定的帮助~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 CHECK 约束来实现这个需求,具体步骤如下: 1. 创建规则,限定只能输入大于零的数值: ```sql CREATE RULE rule_quantity_check AS @quantity > 0 ``` 2. 创建表,包含 quantity 字段并绑定规则: ```sql CREATE TABLE proout ( id INT PRIMARY KEY, quantity INT, -- 绑定规则 CONSTRAINT chk_quantity CHECK (quantity > 0) ) ``` 这样,当向 proout 表中插入数据时,如果 quantity 字段的小于等于 0,就会触发 CHECK 约束,导致插入失败。 ### 回答2: 要在SQL Server中创建一个规则,限定只能输入大于零的数值,并将其绑定到proout表的quantity字段上,您可以按照以下步骤进行操作: 1. 打开SQL Server Management Studio(SSMS),并连接到您的数据库。 2. 在对象资源管理器中,展开数据库,找到并展开目标表所在的架构和表。在此示例中,我们将使用dbo架构和proout表。 3. 在proout表上右键单击,然后选择“设计”。 4. 在设计视图中,找到quantity字段并在其上右键单击,然后选择“规则”。 5. 选择“新建规则”以创建新的规则。 6. 在规则编辑器中,为规则输入一个适当的名称,例如"检查大于零的数值"。 7. 在“约束”部分内, 输入以下SQL代码: CHECK (quantity > 0) 这将检查quantity字段的是否大于零。只有大于零的才能插入或更新到该字段。 8. 单击“确定”保存规则并关闭规则编辑器。 9. 单击左上方的“保存”按钮保存对表的更改。 现在,当您在proout表的quantity字段中尝试插入或更新时,只有大于零的数值将被接受。如有任何小于或等于零的尝试插入或更新,将会引发错误。注意,现有的小于或等于零的不会受到影响,但是无法通过规则来插入或更新小于或等于零的。 ### 回答3: 要在SQL Server上创建一个规则来限制只能输入大于零的数值,并将其绑定到proout表的quantity字段上,可以按照以下步骤进行操作: 1. 打开SQL Server Management Studio,连接到适当的数据库。 2. 在“对象资源管理器”窗口中,展开数据库,然后展开“安全性”文件夹。 3. 右键单击“规则”文件夹,并选择“新建规则”。 4. 在“新建规则”对话框中,输入规则的名称,例如"CheckPositiveValue"。 5. 在“定义规则”文本框中,输入以下T-SQL代码: ```sql @quantity > 0 ``` 此代码用于检查输入的@quantity是否大于零。 6. 在“消息”文本框中,输入适当的错误消息,例如"Quantity must be greater than zero!"。 7. 确保“模式绑定规则”复选框处于选中状态。这将确保规则绑定到数据库模式而不是具体的表。 8. 单击“确定”按钮以创建规则。 9. 打开"proout"表的设计视图。 10. 选中"quantity"字段,在右侧的“常规”选项卡中找到“规则”属性。 11. 单击“…”按钮并选择新创建的规则。 现在,当尝试向proout表的quantity字段输入小于或等于零的数值时,将会出现错误消息,阻止保存。 请注意,即使在应用规则之后,您仍然需要在应用程序或用户界面中执行适当的数据验证。规则可以帮助在数据库层面上进行验证,但还需要在应用程序层面上进行额外的验证以确保数据的准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值