I only update when I feel like it.

tomisan.com

【jquery.validate】バリデーション&ブラウザの確認ダイアログ(confirm)を出して送信する

送信ボタンをクリックしたら、バリデーションをチェック。
エラーが無ければ確認ダイアログ(confirm)を出してOKボタンで送信する。

 
jquery.min.jsとjquery.validate.min.js読み込み

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" charset="utf-8"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.20.0/dist/jquery.validate.min.js"></script>

 

html

<form id="formname">
    <fieldset>
      <legend>送信内容を確認してください</legend>
      <label for="inputcheck">
        <input type="checkbox" id="inputcheck" name="inputName">これで大丈夫!
      </label>
      <div id="error-inputName"></div>
    </fieldset>
    <br>
    <button id="btnconfirm">送信する</button>
</form>

 
jQuery

// 
$(document).ready(function() {
  var formname = $("#formname").validate({
    rules: {
      inputName: {
        required: true,
      },
    },
    messages: {
      inputName: {
        required: "ちゃんと確認してください!",
      },
    },
    errorPlacement: function(error, element) {
      if (element.attr("name") == "inputName") {
        error.insertAfter("#error-inputName");
      } else {
        error.insertAfter(element);
      }
    },
  });

  // 送信ボタンの設定
  $('#btnconfirm').click(function(e) {
    e.preventDefault();
    var formId = "#formname";
    // 入力要素がある場合
    if ($(formId).length > 0) {
      if ($(formId).valid()) {
        if (confirm('本当に送信しますか?')) {
          formname.settings.submitHandler = function(form) { form.submit(); };
          $(formId).submit();
        }
      } else {
        formname.form();
        // エラーの最初の要素にフォーカス
        $(":input.error:first").focus();
      }
    } else {
      // 入力要素が無い(送信ボタンのみ)場合
      if (confirm('本当に送信しますか?')) {
        $(formId).submit();
      }
    }
  });
});
//

サンプルはこちら
 
 

コメントは受け付けていません。