display: none;
してもフォーム送信されますが、該当要素に disabled
属性を付与する事でフォーム送信しなくなります。
HTML
1<form>
2 <input type="text" name="hoge">
3 <input type="text" name="foo" disabled><!-- フォーム送信されない -->
4</form>
5
6<script>
7document.querySelector('form').elements['hoge'].disabled = true; // input[name=hoge] を disabled にする
8</script>
簡易的に、データ入力制限をするための策なので、究極的には、データのバリデーションを行えばよいとは思っています。
フォーム送信制限をかけたとしてもフォーム送信することは可能なのでサーバ側でのバリデーションは必須だと思って下さい。
CSS や JavaScript で制限をかけたとしても突破する方法はいくらでもあります。
(9/16 12:58追記)
ひょっとして、こういう事なんでしょうか。
× Q. <input type="checkbox" style="display: none;" checked>
でフォーム送信される事が偶発的にありえますか?
↓
○ Q. <input type="checkbox" style="display: none;">
となっているコントロールをユーザが checked
状態にする事は可能ですか?
私は前者だと思っていましたが、後者の場合はいくつか方法があります。
- ブラウザの CSS を Off にしている
- CSSを使わないテキストブラウザを使用している
- 外部CSSの読み込みに失敗した
- JavaScript で
input.cheked = true;
を実行する(bookmarkletやコンソール等)
基本的に CSS に依存する UI は好ましくないと思います。