我有一个包含一些javascript验证的网络表单,但是当用户在浏览器中明确关闭Javascript时,不会执行验证并且用户提交的数据会出错。
我首先关心的是如何阻止用户提交表单。
我用谷歌搜索了,我得到了 noscript 标签可以用来告诉用户你的浏览器禁用了Javascript。我想问的是,当用户在浏览器中禁用了Javascript时,我们可以进行任何客户端验证,这样用户就不会提交错误的数据。
我可以编写代码来禁用提交按钮,如
document.getElementById("submit").disabled=true
这可能吗?
任何帮助或建议对我都有很大的帮助。
答案 0 :(得分:3)
如果禁用JavaScript,则您的客户端验证都不会正常工作。此外,您的代码禁用按钮也不起作用,因为它是javascript:(
如果禁用JavaScript并向用户显示消息,您可以尝试使用此类内容隐藏您的表单。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style>
.hidden {
display:none;
}
</style>
</head>
<body>
<noscript>JavaScript is disabled. </noscript>
<form method="POST" action="http://www.google.com" id="my-form" class="hidden">
<input type="text" value="Some text here" />
<input type="submit" value="Submit" />
</form>
<script type="text/javascript">
document.getElementById("my-form").style.display = "block";
</script>
</body>
</html>
或者您可以使用这些方法中的任何一种将用户重定向到另一个页面。
<noscript>
<meta http-equiv="refresh" content="0;url=your-noscript-page.html">
</noscript>
或者这个
<noscript>
<a href="your-noscript-page.html">JavaScript is disabled in your browser. Click here to continue</a>
</noscript>
或不使用Modernizr库的Modernizr方法。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style>
.no-js form {
display:none;
}
.js-disabled {
display:none;
}
.no-js .js-disabled {
display:block;
}
</style>
</head>
<body class="no-js">
<div class="js-disabled">JavaScript is disabled in your browser.</div>
<form method="POST" action="http://www.google.com" id="my-form">
<input type="text" value="Some text here" />
<input type="submit" value="Submit" />
</form>
<script type="text/javascript">
document.getElementsByTagName("body")[0].className = "";
</script>
</body>
</html>
答案 1 :(得分:2)
简短回答:没有。 答案很长:您应该始终在服务器上进行验证,即使您已经(或者您认为)在客户端验证了。期望所有用户都是恶意的,并将“好”的用户视为例外,这一直是最安全的。