私はフォームのcheckValidity
methodがこれをしないことに驚いています(ブラウザをvalidity checksに設定し、それに応じて状態を設定するなど)。
例::
$(this).click(function(e) {
e.preventDefault();
if (this.form.reportValidity) { // <===
this.form.checkValidity(); // <===
} // <===
// ...
});
あなたはそれをサポートしていますかどうかを検出し、もしそうなら、それを使用することができますので、彼らは上、提出しない何をサポートreportValidity
、(ChromeとFirefoxを含む)
一部のブラウザ。私があなたがクリックしているものがフォーム内にあると仮定しているので、それが入っているフォームを参照しているのはthe form
propertyです。彼らもキャンセルフォームの提出とコードのdidnを許可していませんので、私はスタックスニペットを使用していないよ(
var form = $("selector-for-the-form")[0]; // Note getting the raw element
if (form.reportValidity) {
form.reportValidity();
}
例(live copy on jsFiddle)を:いない場合は、フォームを見つけたコード、例えばとthis.form
を置き換えます「Tは、スタックスニペットでのFirefoxで正しく動作します。それがjsFiddleのキャンセルフォーム送信と作業を行います):
HTML:
<p>Click the button without filling in the field:</p>
<form>
<label>
Required field:
<input type="text" required>
</label>
<input type="submit" id="btn" value="Click to validate">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
JavaScriptを:私が理解できる限り
$("#btn").on("click", function(e) {
e.preventDefault();
this.form.reportValidity();
});
jQueryにはnyのデフォルト検証。最初に検証をどのように構築したかについては、使用しているBootstrapフレームワークを調べる必要があります。 e.preventDefault()の後で、独自の検証コードを呼び出すでしょう。バリデーションを行わないようにフレームワークのデフォルト動作が必要な場合は、 "required =" required ""タグを削除してください。 – zerohero
@zerohero:質問はブラウザ(jQueryではなく)によって処理されるHTML5の妥当性制約に関するものです。要素上で 'required =" required "'についてのビットを見てください。 –