此代码未优化,也不是最佳方法。如果您有任何想法可以改进,请告诉我。
请访问该网站以了解数据。 我使用了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字段,因为它总会填充下一个范围。但是,我将添加删除规则的功能,因此如果它们的功能有限,可能会变得混乱。
答案 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值是很容易实现的。
删除规则只需遵循与添加一行相同的步骤:删除一行(如果有)下面的行将其“开始”值设置为现在上一行的“结束”。
真正的困难是在任意点插入线条。不过,我不打算考虑那个。
编辑: 如果重写是不可能的,那么只需禁用启动就足够了。然而,恕我直言,我宁愿(重新)写一些没有任何警告的东西,而不是花费时间在许多错误和功能请求上。