Masked Inputプラグインを使用してマスクされ、Validation Plugin によって必須フィールドとしてマークされているテキスト ボックスがある場合、次の点を考慮してください。
マスクされたテキスト ボックスにフォーカスを置き、何も情報を入力せずにそのままにしておく (またはマスクを満たすのに十分な情報を入力しない) と、マスクされた入力プラグインによってすべてが削除され、空のテキスト ボックスが残ります。
$("#phoneNumber").mask("(999) 999-9999? x999999");
$("#sampleForm").validate({
rules: {
phoneNumber: "required"
}
});
検証プラグインは、マスクされた入力プラグインの前にブラーイベントを発生させているようです。これにより、テキスト ボックスが検証に合格し (テキストが含まれているため)、マスクされた入力プラグインが開始され、テキストが削除されます。フィールドは、フォーカスを失ったらすぐに無効としてマークする必要があります。
正規表現バリデーターを使ってみました。近いですが、マスクされた入力プラグインがフィールドをクリーンアップする前にトリガーされるため、エラーが表示されるべきではないときにエラーが表示されます (ただし、ユーザーがフォームを送信しようとするとエラーは消えます)。
私もこれを試しました:
$('input').bind('unmasked.maskedInput', function () { $(this).valid(); });
これは機能しますが、バリデーターの初期動作にも干渉します。送信ボタンが押されるまでフィールドは検証されず、フォーカスを失ったときに検証されます。
私が直面している問題を表す jsFiddleをセットアップしました。