【问题标题】:HTML vs. JavaScript form validation [duplicate]HTML 与 JavaScript 表单验证 [重复]
【发布时间】:2015-09-02 21:00:43
【问题描述】:

我是前端 Web 开发的新手,正在制作一个小型应用程序,我想在其中验证用户是否确实输入了有效的 URL。

起初我认为我应该使用 js 解决这个问题,但是如果用户关闭了 js 怎么办?

我应该改用 HTML5 表单验证技术吗?或者也许两者都用?

我知道我可以进行服务器端验证,但我的问题主要是 HTML 验证是否用于现实生活中的应用程序 b/c 是否有可能关闭 js?感谢您的帮助。

【问题讨论】:

  • JS / Html(客户端)验证仅用于使应用程序看起来更好。 总是(也)使用服务器端验证。
  • 你可以检查JS是否被关闭,如果是,告诉用户打开它。这是一个选择
  • 您总是在服务器端验证数据。客户端验证仅用于方便用户,而不是用于实际验证用户输入是否有效。原因就是您已经提到的 - 如果用户关闭了 JS 怎么办。有很多类似的假设。底线 - 无论您使用什么进行前端验证,都在服务器上进行验证。
  • 老实说,如今大多数网站都无法在没有 javascript 的情况下运行,尤其是在许多现代网站大量使用 angular 的情况下。进行服务器端验证绝不是一个坏主意。我个人使用 html 5 和角度指令进行所有验证
  • @user65439:“做服务器端验证从来都不是一个坏主意。”?这不太正确。进行服务器端验证总是是个坏主意

标签: javascript jquery html validation


【解决方案1】:

我们通常使用 Javascript 进行 FORM 验证,正如您所说,用户可能禁用了 javascript,但现在这种情况极为罕见,因为几乎每个网站都有一些 javascript 行,而且许多主题在没有 javascript 的情况下无法工作(想想gmail、谷歌地图和所有的网络应用程序)。用户使用不支持 HTML5 表单验证的旧版浏览器的情况更为常见(无论如何也不常见)。

无论如何检查服务器上的值,一般规则是“从不信任用户”:D

【讨论】:

    【解决方案2】:

    但是如果用户关闭了js呢?

    HTML5 也是如此——如果用户使用的浏览器不支持它怎么办?

    如果您想在服务器端处理数据,您应该始终执行服务器端验证。前端验证主要用于减少服务器负载并使事情看起来更流畅。它很容易被绕过。

    如果您担心用户禁用了 JavaScript,您可以使用the noscript element

    <noscript>
        This website relies on JavaScript, which you appear to have disabled. You will not be
        able to use many of this website's features without JavaScript enabled.
    </noscript>
    

    如果启用脚本,则 noscript 元素不代表任何内容,如果禁用脚本,则表示其子元素。它用于通过影响文档的解析方式,向支持脚本和不支持脚本的用户代理呈现不同的标记。

    ——HTML5 Specification: The noscript element

    【讨论】:

    • @TylerH 我从来没有说过不支持 HTML 的浏览器,我说的是不支持 HTML5 的浏览器。例如,Internet Explorer 8 是一种仍然非常流行的浏览器,它不支持 HTML5。 Internet Explorer 9 确实支持 HTML5,但不支持其表单验证功能。等等等等等等。
    • 我不知道为什么这被否决了...+1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多