私は自分が作成しているフォームを持っていますが、その機密性のために、かなりのJavaScript検証が行われており、JSが有効になっていない場合、ユーザーがフォームを開始することを許可できません。昔は、NOSCRIPTタグの使用について通知を出していました。HTML5での使用はまだ問題ないようですが、途中で使用されているようです。このような状況を処理するための新しい/好ましい方法はありますか?
ありがとう。
私は自分が作成しているフォームを持っていますが、その機密性のために、かなりのJavaScript検証が行われており、JSが有効になっていない場合、ユーザーがフォームを開始することを許可できません。昔は、NOSCRIPTタグの使用について通知を出していました。HTML5での使用はまだ問題ないようですが、途中で使用されているようです。このような状況を処理するための新しい/好ましい方法はありますか?
ありがとう。
HTML5のものが増えれば、JavaScriptはそれほど必要ではなくなります。たとえば、フォームの検証にはJSは必要ありません。オーディオ/ビデオはJavaScriptやFlashを必要としなくなりました。等々。
ただし、<noscript>
特定の機能にはJavaScriptが必要であることを人々に知らせるための最も信頼できる方法です。別の方法は、「JavaScriptが必要です」というテキストをページに配置し、JavaScriptを使用して削除することです。
過去に、私はページの前にリダイレクトを使用してこれを行いました。
フォームへのwindow.location()のようなものと、それがサポートされていないことを示すページへのメタリフレッシュタグ。
問題は、JavaScriptがない場合、ページ上のものをどのように非表示または防止するかです。
あなたは私が同じページで提案したことをすることができます。デフォルトでメタリフレッシュをロードしてから、JavaScriptで停止させます。
または、JavaScriptで非表示の変数を設定して、フォームサーバー側をブロックすることもできます。
いくつかのオプション。NOSCRIPTタグを使用する以外は、おそらくそれらが最適です。
常にサーバー側で検証を提供し、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>