JQuery:验证数据规则

时间:2010-08-23 07:45:54

标签: php javascript jquery html validation

Site

此代码未优化,也不是最佳方法。如果您有任何想法可以改进,请告诉我。

请访问该网站以了解数据。 我使用了Dan G. Switzer,II的计算插件[添加.sum()。max()。min()。avg()]

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

例如给

Brian 40 50 1200
Brian 50 70 1200

我不希望用户能够设置前50到39,因为39会小于40.我不希望他们将50设置为高于50的任何值,因为它会与下一个范围重叠。 / p>

有什么好主意吗?也许实际上贯穿所有的值,然后制作一个真正的范围然后在BLur上检查以确保没有范围实际上是重叠或有间隙。

每个唯一输入定义为id = NAME,所以如果我想引用Brian的所有输入,我可以使用$("input[id='Brian']").each()或者如果我想引用Brian的所有START输入,我可以使用{ {1}}

编辑:

需要注意的一点是页面是PHP,运行PHP以通过CSV文件填充输入。它始终以正确的数据开头,PHP可用于帮助创建范围。

因为这个我只想禁用START字段,因为它总会填充下一个范围。但是,我将添加删除规则的功能,因此如果它们的功能有限,可能会变得混乱。

1 个答案:

答案 0 :(得分:1)

我看到的一个问题是名称字段是可编辑的。如果字段已更改,则必须重新计算所有重叠。这不仅是一个性能问题,而且还是一个可用性问题:如果想要更改名称和脚本,看到差异,会禁止它吗?

解决方案是将表格更改为类似下图的表格:

[ Add Employee ]

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

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

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

然后添加一个比较函数来检查End值是否低于Start值是很容易实现的。

删除规则只需遵循与添加一行相同的步骤:删除一行(如果有)下面的行将其“开始”值设置为现在上一行的“结束”。

真正的困难是在任意点插入线条。不过,我不打算考虑那个。

编辑: 如果重写是不可能的,那么只需禁用启动就足够了。然而,恕我直言,我宁愿(重新)写一些没有任何警告的东西,而不是花费时间在许多错误和功能请求上。