仲間のプログラマーが、HTML コードで非表示フィールドを使用するのは「悪い習慣」だと言いました。基本的に、ユーザーが選択したカテゴリ (カテゴリは写真) に基づいてアイテムを選択する順序付けられていないリストがあります。次に、javascript を呼び出して、隠しフィールドをユーザーが選択した値に設定し、フォームが送信されたときに送信できるようにします。これは本当に悪い習慣ですか、これを行うべき別の方法はありますか?
5 に答える
非表示のフィールドが存在するため、入力を表示せずにフォームに値を設定できます。非表示のフィールドを使用するのがどのように悪いのか理解できません。カスタムウィジェットを作成し、フォームを介してその値を送信する必要がある場合は、それを行うのが最も簡単な方法です。動的選択リストで選択ボタンを使用することもできますが、インターフェイスをきれいに見せるために醜いハックを行う必要があります。
これは非常に一般的な方法です。あなたの場合に私が考えることができる唯一の問題は、訪問者がJavaScriptを無効にすると壊れてしまうことです。そのため、フォールバックが必要になる場合があります。
フォームを送信する際に、表示されているフォーム フィールドに含まれていないいくつかの単純な値を渡す必要がある場合、非表示フィールドはおそらく最も古く、最も信頼性が高く、最もクリーンな方法です。
代替案を検討してください。
役に立たない: 隠されたものは何も渡さないでください。
悪い例: ASP.Net viewstate のような抽象化で、とにかく非表示フィールドを使用しますが、要求モデルを汚染します (注意しないと不要なデータを大量に追加する可能性がありますが、ほとんどの人はそうではありません)。
悪い: すべてのフォーム値をクエリ文字列で渡します。これは通常非 RESTful であり、まったく有害な場合があります (ユーザーがクエリ文字列をブックマークすると、予期しないアクションが実行されます)。
おそらく: AJAX を使用して値を手動で POST します。非同期操作のみを実行したい場合、これは非常に有効な実装になります。
おそらく: サーバーが変更を処理する完全なラウンドトリップ (JavaScript を使用しないユーザーをサポートする唯一の方法である可能性があります)。
安全でなければならない情報に非表示フィールドを使用するのは悪い習慣です。セキュリティ上の問題がない場合は、通常、隠しフィールドを使用しても問題ありません。
HTML DOM に JavaScript の値を格納することは、一般的に悪い習慣です。JavaScript 環境に格納されたリストを作成してみてください。
window.myList = new Array();
たくさんのものがある場合は、Underscore.jsやBackbone.jsなどを使用することをお勧めします。
提出時にこれらのデータのみを使用する場合、あなたのケースは正当に見えます。