-3

I have a web form it contains some javascript validtions, but when user explicitly turned off Javascript in the browser, validations are not performed and data submitted by the user gets wrong.

My first concern is that how to prevent the user to submit the form.

I have googled and I got that noscript tag can be used to tell the user that Javascript is disabled in your browser. What I want to ask is that when the user has disabled the Javascript in the browser, can we do any client side validation so user will not submit wrong data.

And can I write code to disable the submit button like

document.getElementById("submit").disabled=true Is this possible.

Any help or suggestion would a great help for me.

4

2 に答える 2

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>
于 2012-07-19T05:10:51.907 に答える
2

短い答え:いいえ。長い答え:クライアント側で既に検証済み (またはそう思う) であっても、常にサーバーで検証する必要があります。すべてのユーザーが悪意のあるユーザーであると想定し、「良い」ユーザーを例外として扱うのが常に最も安全です。

于 2012-07-19T05:14:07.927 に答える