我有一个非常大的HTML表,包含1500行(由PHP生成的标记)。每行都有一个5元素复选框和一个textarea。
这是一个示例行:
<tr id="abc123">
<td>abc123</td>
<td valign="top"><input name="v1" value=1 type="checkbox"></td>
<td valign="top"><input name="v2" value=2 type="checkbox"></td>
<td valign="top"><input name="v3" value=3 type="checkbox"></td>
<td valign="top"><input name="v4" value=4 type="checkbox"></td>
<td valign="top"><input name="v5" value=5 type="checkbox"></td>
<td valign="top"><textarea name="notes"></textarea></td>
<td valign="top"><input type="submit" name="submit"></td>
</tr>
有更多列,但这是重要的部分。
设置此项的最佳方法是什么,以便每60秒检查/重绘一次提交按钮?如果已提交行/表单,则提交按钮将需要更改为链接。
是否会同时发生多次写入会导致可怕的性能?我们的服务器可以处理它,但我更关心客户端功能(谁使用中档或更差的台式机)。
除了将记录分解到单独的页面(对此不感兴趣的客户)之外,是否有更好的方法在单个页面上处理这么多表单?
更新 我认为让用户点击他们想要更新的行可能会更有意义,然后只会将该行转换为表格。如果一行失去焦点,我将显示一个confim框,这样他们就不会丢失或提交不完整的数据。
答案 0 :(得分:2)
1)将整个表格放在单个表格标签对之间。
2)使用名称标签识别每个复选框或其他元素,如下所示:
checkbox_abc123_1 (value=1)
checkbox_abc123_2 (value=2)
textbox_abc123 (value=foobar)
3)向每个输入对象添加onClick或onBlur事件。这将是你的ajax电话。将ID标记发送为&#39; name&#39;输入值为&#39; value&#39;。您将这些用于POST处理。
4)在POST页面上,标识您的输入元素(提示:explode(&#39; _&#39;,$ name);),验证内容并写入SQL表。
您可以使用您的帖子页面为每个表行提供更新,以向其他用户宣布该字段已更新。但是,这不能解决为其他用户更新输入对象的问题。
如果您需要回复实际代码,但这应该指向正确的方向。
答案 1 :(得分:0)
客户端应该没有问题,除非您期望有特定的限制,大多数现代浏览器都应该轻松应对。这可能需要一些时间,但没问题。
如果您担心性能,请确保您的代码干净且嵌套正确,我们可以说,有效的html严格代码,这将有助于客户端呈现页面。
关于时间,你必须使用javascript或类似的,取决于你更喜欢检查时间;在javascript中设置计时器并不困难。在页面末尾加载脚本,使其不会干扰表的初始呈现。
另外,如果你可以控制服务器,尝试使用mod_deflate,如果你不能和你使用php,在输出缓冲区中使用zip,如果你使用任何其他服务器端语言,尝试使用任何压缩方法可用。
更新
这是一个非常好的主意,它会减少页面传输的重量和渲染时间;您的用户会很感激,加上DOM的遍历也会更快更容易
再见
答案 2 :(得分:0)
尝试使用插件更适合用户jQuery Pagination或尝试DataTable