jQuery Validate Pluginで、初回入力時のフォーカスアウトでバリデーションが走らない場合の対処法

最近、EFO(エントリーフォームオプティマイズ)の一環として、久しぶりにjQuery Validate Pluginを使って実装しておりました。

デフォルトだと、必須のテキストフィールドにフォーカスして未入力の場合、フォーカスアウトしてもバリデーションが実行されないようです。

海外の掲示板を見ていると、これを”Lazy validation”(怠けたバリデーション?)というように言っているのをよく見かけます。
この場合、一旦フォーカスした後にタブボタンで未入力フィールドを抜けると、エラー内容がでません。一旦フォーカスてたら未入力でフォーカスアウトしてもエラーが出るフォームも少なくないですし、「必須」と書いてあっても、それを見落とす人は必ず出てくるので、未入力でもなんにも問題無いというように見えてしまいます。そして、またォーカスしない限り、送信ボタンを押すまで、エラー内容に気づけない状態になり、大丈夫だと思って送信押した時に、大丈夫じゃなかったというのは、大きい離脱ポイントになる可能性があります。

なので、フォーカスアウトした時はいつでもバリデーションをして問題があれば表示したいと思いました。
その場合、どうするかというと以下のように記述します。

$validator = $("#form").validate({
  rules: {
    ・・・
  },
  onfocusout: function(element) {
    $(element).valid();
  }
});

onfocousoutで、フォーカスアウト時にフォーカスアウトしたフィールドのバリデーションを走らせるイベントを設定します。
こうするとフォーカスアウトした時に必ずバリデーションを実施するようになります。

funnydreamer
栃木生まれのミドルエイジ。フロントエンドとデザインの領域におりましたが、最近はマーケティングやライティングにPythonによる自動化など何でも屋になってきました。趣味は、ゲーム、アニメ、自転車(ポタリング)、カフェ巡り、お絵描きと自称多趣味。ケーキはショートケーキが好物。

ADD COMMENT

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください