2

これは、fieldset 要素を使用して 2 つのセクションに分割された標準の HTML フォームです。1 つのセクションでは、名前、電子メール アドレスなどを入力し、2 つ目のセクションでは、住所のオートコンプリート機能の郵便番号を入力します (2 つ目のセクションの郵便番号ルックアップ フィールドには必須属性がありません)。

各セクションには、独自の送信ボタンがあります。最初のセクションの各フィールドには、HTML5 必須属性を持つフォーム フィールドがあります。

私の質問は、ユーザーが最初のセクションに何も入力せずに郵便番号検索フィールドに郵便番号を入力すると、フォーム内のすべてのフィールドがこの属性をサポートしていないブラウザー (Firefox 3.6 など) に送信されるということです。Firefox 4 (たとえば) では、required 属性を尊重し、required 属性を持つ空のフィールドがある場合、フォームの送信を防ぎます。ただし、これにより、フォームのエラーチェックと検証の実装(サーバー側、PHP)が壊れます。

それで、2番目のセクションの送信ボタンが押されたときに最初のセクションの「必須」属性を無視するようにブラウザに指示できる方法はありますか?

これが必須属性のポイントに反する可能性があることは理解していますが、特定の順序で入力する必要がないようにフォームを作成しました。詳細ですが、required 属性は現在、ユーザーに特定の方法でフォームを完成させることを強制していますが、そうする必要はありません。

また、どのソリューションも JavaScript なしで機能する必要があります。郵便番号ルックアップ セクションを Ajax に置き換えることを推奨する回答には言及しないでください。これは許可されていないオプションであると判断されました。

4

2 に答える 2

2

私はあなたの問題を見ていると思います。HTML には、このより複雑な検証規則を指定できるものはないと思います。次のいずれかを行う必要があると思います。

  1. これらのフィールドセットをページ上の 2 つの個別のフォームに分割します。

  2. 2 つの異なるページで 2 つの別々のフォームを使用します。また

  3. requiredユーザーが郵便番号を送信した場合にのみ非郵便番号フォーム フィールドに属性が含まれるように、サーバー側のコードを書き直してください。

于 2011-05-19T09:57:19.457 に答える
1

ページにネストされたフォームはありますか? 最初のフォーム タグは、以下のようなネストされたフォームでは機能しません。その場合は、空のフォーム タグを使用してエラーを回避してください。また、form.filed{} のようにフォーム タグで始まるクラスを記述しないでください。

<form>
main form
<form> </form>
<form> form1 </form>
<form> form2 </form>

</form>
于 2013-11-21T06:04:40.717 に答える