0

背景:

我是 JS 和 Prototype 的新手,所以请耐心等待。

我有一个非常大的表格。完整的表格目前重 233K。大约 400 个带有标记、样式和一些自定义 JS 的表单项。它使用带有 Jotform“增强”的 Prototype,未压缩时的重量为 370K。对于略读这个的人来说,这是 600K。

600K。我把它称为 ProJo 只是为了减轻与它相关的东西的重量。

它的目的是在手机和潜在的平板电脑上使用,所以我决定,无论好坏,由于某些部分只是偶尔需要,我会删除它们并根据需要动态添加它们。这部分工作完美(有轻微的隐藏/显示故障,我认为这与以他们不打算使用的方式使用现有动画有关,但现在不是重点)。

不再起作用的是表单验证。似乎每个表单和 CSS 元素在页面加载时都被“收集”,并且动态添加的任何内容都不会包含在集合中。

我通过搜索看到这是一种普遍现象,不幸的是,没有一个解决方案适用于 ProJo,或者它们可能的地方,都没有给我足够的咬合力。这个解决方案与我来的一样接近,但我不明白如何应用它,即使它是我问题的正确答案。据我了解,它适用于您希望从调用它的那一刻起应用于所有元素的特定功能。挑战是我不知道要调用什么函数。

表单使用 JotForm.init(); 进行初始化。有没有办法重新初始化?这是 Prototype 会做的事情,还是会在 Jotform 增强功能中存在(如果存在)?如果没有,是否有可能,如果可以,我将如何去做?

昨天我花了几个小时使用 chrome 调试器对 ProJo 中调用的函数进行了一堆跟踪,并在 ProJo 脚本和 DOM 事件上添加了断点,但由于我认识到我对语言、ProJo 和调试的经验不足像这样,我想不通。

这是相关jotform.js的链接。

如果您需要更多代码,请告诉我......我已经接近了一个点,我认为在 jQuery 中重新实现验证和动画可能会更容易。公平地说,我从来没有使用过 jQuery……只在网上阅读了 jQuery 和 Prototype 之间的比较,但是丰富的示例、指南、用户群和准备运行的插件是一个巨大的吸引力。JotForm 是一种快速构建外观漂亮且功能强大的表单的好方法,但我想我的需要更进一步。值得称赞的是,据我所见,如果不是全部的话,大多数样式都是在 CSS 中完成的,他们只修改类值以更改表单的外观以进行验证。

总结一下:原型/JotForm (ProJo) “增强”表单,其中动态表单元素不验证。有没有办法重新初始化 ProJo 或调用某些函数来执行或仅调用所需的函数(我不知道这些函数)?有谁认为/知道是否值得在 jQuery 中重做?

还有一个问题,顺便说一句:我的方法有缺陷吗?有没有其他人为移动解决方案实施过这么大的表格?你的经历是什么?

谢谢

4

1 回答 1

0

与其从表单中删除元素,不如将它们隐藏在“汇总部分”中?将表单的各个部分包裹在 div(或字段集)中,然后使用 Element.hide/Element.show(甚至是 scriptaculous 中的上卷/下卷动画)。您可以使用 dom:loaded 事件处理程序中的 Element.hide 来预设表单,其中一些使用较少的部分已经隐藏。重要的一点是不要禁用表单字段(或删除它们),然后验证器应该看到整个表单并正常工作。

这是我在一个相当复杂的网络应用程序上使用的技术(使用我自己的生成器/填充器/验证器/提交器库),它降低了代码复杂性,因为所有表单始终存在,并且用户找到了汇总/汇总的想法很容易掌握。它甚至可以在 iPhone 和 Android 上运行!

于 2011-06-26T11:06:42.100 回答