入力タイプが「送信」でない場合のHTML5検証



Html5 Validation When Input Type Is Notsubmit



解決:

HTML5フォームの検証プロセスは、フォームが送信ボタンを介して送信されている状況に限定されています。フォーム送信アルゴリズムは、フォームがを介して送信された場合、検証は実行されないことを明示的に示しています。submit()メソッド。どうやら、JavaScriptを介してフォームを送信する場合は、検証を行うことになっているという考えです。

ただし、HTML5属性で定義された制約に対して、(静的)フォーム検証をリクエストできます。checkValidity()メソッド。ブラウザがHTML5フォームの検証で行うのと同じエラーメッセージを表示したい場合は、制約されたすべてのフィールドをチェックする必要があると思います。validMessageプロパティは、フォームではなく、フィールド(コントロール)のプロパティです。提示された場合のように、単一の制約付きフィールドの場合、これはもちろん簡単です。



function submitform(){var f = document.getElementsByTagName( 'form')[0]; if(f.checkValidity()){f.submit(); } else {alert(document.getElementById( 'example')。validationMessage); }} 

遅れるかもしれませんが、私が行った方法は、非表示の送信入力を作成し、送信時にクリックハンドラーを呼び出すことでした。次のようなもの(簡単にするためにjqueryを使用):

保存関数submitform(){$( '#submit_handle')。click(); } 

入力を囲むフォームタグを使用する必要があります。そして、入力タイプは送信します。
これは機能します。



保存する

HTML5検証は送信ボタンでのみ機能するため、そのままにしておく必要があります。フォームのイベントハンドラーを記述してデフォルトのアクションを防止することにより、有効な場合でもフォームの送信を回避できます。

document.getElementById( 'testform')。onsubmit = function(e){e.preventDefault(); }

これにより、無効な場合は検証が行われ、有効な場合はフォームが送信されません。