client_side_validationsgemを使用してお問い合わせフォームを検証しています。無効な場合、gemはフィールドの横にエラーメッセージを表示します。また、ユーザーが有効な情報を入力したときにフィールドの横に成功メッセージを表示するカスタムコールバック(Github wikiを参照)を実装しました。
// Define a callback to run whenever an attribute passes validations
clientSideValidations.callbacks.element.pass = function($element, callback) {
console.log("Element passed", $element);
// Allow clientSideValidations to do it's thing.
callback();
// Add a success message to give the user an ego lift.
$element.closest('p').addClass('pass');
$message = $('<span class="message">Great job!</span>');
$element.after($message);
};
ただし、検証がまったく行われていないフィールドがあると、問題が発生します。
class Contact < ActiveRecord::Base
attr_accessible :name, :phone_number
validates :name, presence: true
# I don't need to validate the phone number in any way.
end
この場合、ユーザーが電話番号フィールドをタブで移動すると、pass
コールバックは実行されません。代わりにコールバックを使用してこれを実行しようとしましたafter
が、どちらも実行されていないようです。
フォームのすべてのフィールドでコールバックを強制的に実行する方法はありますか?