私は大きなフォームを持っています。私はブートストラップタブを使ってユーザーにプレゼンテーションしています。さまざまなタブには、required="required"
属性を持つ入力フィールドがあります。そこに非現在のタブの空白の必須フィールドがあると私は、フォームが送信されていない送信ボタンをクリックするだけでなく、ブラウザ(クロームV55)は空白の必須フィールドをユーザに警告するために何もしない必要なフィールドが隠れているときにフォームを傍受する方法は?
<!-- illustrative code only, with all the excess cruft elided -->
<form onsumbit="return somefunction(this);" method=post action="url">
<fieldset style="display: none;">
<!-- the hidden tab -->
<input required name="princess">
</fieldset>
<fieldset>
<input required name="goomba">
</fieldset>
<button type=submit>Save</button>
</field>
隠されたタブに。
<form…>
要素にonsubmit="return validateForm(this)"
ハンドラを置くと、そこに何か感知できることがあると思っていますが、そのハンドラは呼び出されていません。ブラウザは、onsubmit
ハンドラを呼び出す前に、すべての目に見えない入力を調べて妥当性とチョークを行っているようです。
コンソールに、エラーメッセージ「」が表示されます。「name = 'princess'の無効なフォームコントロールはフォーカスできません。」princess
フォームコントロールは別のタブ(<input type=text name=princess required=required>
)にあります。このエラーは、onsubmitが実行される前に発生しています。
だから、<form onsubmit=…>
を使用してこれに対処するのは適切な戦略ではありません。
ユーザーがフォームを送信しようとしたときにjsを実行し、そのjsが正常に必要な処理を実行できるようにするにはどうすればよいですか?
http://jqueryvalidation.org/や_not_のようなライブラリを使用すると、 'required' HTML5プロパティを使用するのはどうですか?あるいは、隠された入力フィールドから 'required'を削除し、' onsubmit'で残りの作業をさせることができますか? –
最初のタブに必要なフィールドがある場合は、ビューが2番目のタブに設定されている場合は、まだ必要です。条件付きで必須のフィールドの場合は、必須ではない場合は非表示にして、disabled = disabled属性も設定します。 – Erics
これまでは、ブラウザの検証後に