代码之家  ›  专栏  ›  技术社区  ›  ParoX

JQuery:验证数据规则

  •  0
  • ParoX  · 技术社区  · 14 年前

    Site .

    我使用了dang.Switzer,II的计算插件[adding.sum().max().min().avg()]

    我想要的验证要求是确保与该用户已经确定的范围没有冲突。而且,在范围内没有间隙。

    例如给

    Brian 40 50 1200
    Brian 50 70 1200
    

    有什么好主意吗?也许实际运行所有的值,然后使一个真正的范围,然后在模糊检查,以确保没有范围实际上是重叠或间隙。

    $("input[id='Brian']").each() 或者如果我想引用Brian的所有开始输入,我可以使用 $("input[id='Brian'][name='start[]'").each()

    编辑:

    因此,我只想禁用START字段,因为它将始终填充下一个范围。不过,我将添加删除规则的功能,这样,如果规则的功能受到限制,就会变得混乱。

    1 回复  |  直到 13 年前
        1
  •  1
  •   Félix Saparelli    14 年前

    我看到的问题之一是名称字段是可编辑的。如果更改了字段,则必须重新计算所有重叠。这不仅是一个性能问题,也是一个可用性问题:如果一个人想更改一个名称和脚本,看到不一致,就禁止它怎么办?

    [ Add Employee ]
    
    |    Name    |  Start  |  End  |  Wages  |
    ==========================================
    |            |    0    |   50  |   100   |
    |    Brian   |   50    |   70  |   150   |
    |            |  100    |  150  |   200   |
    |                 [ Add Rule ]           |
    ------------------------------------------
    |   Another  |    0    |  ...  |   etc   |
    

    [Add Employee]按钮将要求输入一个名称,并在第一列中添加一个单元格,在接下来的三列中添加一行:默认起始值为0。然后用户可以在接下来的字段中输入数据,并可以根据需要[添加规则]。一个好的限制可能是锁定Start列的值并将它们设置为前一行的结束值。

    $('#Brian .LineN input.start').val(
        $('#Brian .LineN').prev().find('input.end').val()
    );
    

    然后添加一个比较函数来检查结束值是否低于开始值,这对于实现来说是微不足道的。

    真正的困难是在任意点插入线。不过,我不会去想那个。

    如果重写是不可能的,那么仅仅禁用start就足够了。然而,我宁愿(重新)写一些没有任何警告的东西,也不愿在以后花时间处理大量的bug和特性请求。