我有一个我正在创建的表单,由于它的敏感性,我正在进行相当多的javascript验证,如果没有启用JS,我不能允许用户在表单上启动。回到那一天,我会发出关于使用NOSCRIPT标签的通知。我发现它们仍然可以在HTML5中使用,但它们似乎正在逐渐消失。是否有新的/首选的方式处理这种情况?
感谢。
答案 0 :(得分:2)
有了更多HTML5的东西,JavaScript不需要那么多。例如,表单验证不再需要JS。音频/视频不再需要JavaScript或Flash。等等。
但是,<noscript>
仍然是告知用户某些功能需要JavaScript的最可靠方式。另一种方法是在页面中放置“需要JavaScript”文本,然后使用JavaScript将其删除。
答案 1 :(得分:0)
过去我在页面之前通过重定向完成了这项工作。
类似于window.location()到你的表单,它们是一个元刷新标记,指向它不支持它的页面。
问题是如果没有JavaScript,你如何隐藏或阻止页面上的内容。
您可以在同一页面上执行我建议的操作。默认情况下有一个元刷新加载,然后让javascript停止它。
或者也许有javascript设置隐藏变量然后你可以阻止表单服务器端。
只是一些选择。除了使用NOSCRIPT标签,但这些可能是最好的。
答案 2 :(得分:0)
您应始终在服务器端提供验证,并返回任何无javascript验证错误。永远不应该依赖Javascript验证作为实际数据验证。
话虽如此,您只需在输入中使用disabled
属性呈现表单,而对action
和form
消息不使用noscript
,然后使用javascript将操作添加到表单并删除禁用属性。
<form id="myform" method="post">
<input type="text" name="something" id="myinput1" disabled />
<input type="submit" id="sbmtbtn" disabled />
</form>
<noscript>You must have Javascript!</noscript>
<script>
document.getElementById('myform').setAttribute('action', '/formpost/url');
document.getElementById('myinput1').removeAttribute('disabled');
document.getElementById('sbmtbtn').removeAttribute('disabled');
// You get the picture
</script>