【问题标题】:Is Form Tag Necessary in AJAX Web Application?AJAX Web 应用程序中是否需要表单标签?
【发布时间】:2011-02-11 21:10:48
【问题描述】:

我阅读了一些 AJAX-Form 教程,例如 this。标签 form 用于 HTML 代码。但是,我认为没有必要。由于我们通过XmlHttpRequest发送HTTP请求,所以发送的数据可以是任何东西,不需要form中的input

那么,有没有理由在 HTML 中为 AJAX 应用程序添加 form 标签?

【问题讨论】:

    标签: html ajax forms xmlhttprequest


    【解决方案1】:

    除了已经讨论过的渐进增强(不要让您的网站需要 JavaScript,直到它真的需要),<form>onsubmit 将是可靠地捕获 Enter 键所必需的提交。

    (当然,您可以尝试在单独的表单字段上捕获按键,但它很繁琐、脆弱,并且永远不会 100% 重现浏览器在构成表单提交方面的本机行为。)

    【讨论】:

      【解决方案2】:

      有时,当用户没有启用 JavaScript 时,使用 ajax 转换其数据的 Web 应用程序要么使用表单作为后备(有时很昂贵,但非常件好事)。

      否则,如果应用程序构建并发送 AJAX 请求,则没有令人信服的理由使用 form,除非您确实需要表单元素的极少数特殊情况。在我脑海中浮现:

      • 使用jQuery的表单序列化函数时
      • 监控表单中所有字段的更改时
      • 当需要使用reset form 按钮时(据我所知,该按钮仅在正确的<form> 中可用)。

      【讨论】:

      • 您可以使用field.value= field.defaultValue(类似地defaultChecked/defaultSelected)手动重置表单字段。不过没什么好玩的。
      • 我还发现表单 autocomplete=off 在某些情况下非常有用。
      【解决方案3】:

      我看到至少两个可能的原因:

      • Graceful degradation (另请参阅Unobtrusive JavaScript:如果用户的浏览器中没有启用 Javascript,您的网站应该仍然可以使用普通的旧 HTML。
      • 浏览器的行为:用户知道表单的外观和行为方式(自动完成、纠错,...);最好不要离那个太远


      我还要补充一点,如果您希望用户输入一些数据,这就是存在<form><input> 标签的原因;-)

      使用正确的标签也可以帮助用户——例如,考虑使用某些特定软件导航的盲人用户:这些软件可能对表单和输入字段有特定的行为。

      【讨论】:

      • 后者是一个很好的观点,了解更多信息会很有趣。任何人都知道 w3c 规范是怎么说的 - input 元素 supposedform 的孩子吗? (即使在现实世界中,它们通常不是。)
      • 规范不在乎。无论如何,在 DTD 中表达这样的限制是不可能的。
      • 我通过validator.w3.org 验证了一个简单的 HTML 页面。输入无表单也可以。
      【解决方案4】:

      这真的取决于你在做什么。如果您想获取用户提交的表单内容并使用 AJAX 将其发送到某处,那么您将需要使用表单标签,以便您的用户可以在某处输入他们的数据。

      在其他情况下,您不会从表单发送数据,在这种情况下,您将无需担心表单:)

      【讨论】:

        猜你喜欢
        • 2015-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-04
        • 1970-01-01
        • 2012-01-12
        • 1970-01-01
        • 2012-09-08
        相关资源
        最近更新 更多