jQuery Validation プラグインを使用して、サイトのフォームを検証しています。
http://docs.jquery.com/Plugins/Validation
placeholder=""
また、次のコードを使用して、HTML5属性をサポートしていないブラウザーにプレースホルダー サポートを提供しています。
// To detect native support for the HTML5 placeholder attribute
var fakeInput = document.createElement("input"),
placeHolderSupport = ("placeholder" in fakeInput);
// Applies placeholder attribute behavior in web browsers that don't support it
if (!placeHolderSupport) {
$('[placeholder]').focus(function() {
var input = $(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
input.removeClass('placeholder');
}
}).blur(function() {
var input = $(this);
if (input.val() == '') {
input.addClass('placeholder');
input.val(input.attr('placeholder'));
}
}).blur().parents('form').submit(function() {
$(this).find('[placeholder]').each(function() { //line 20
var input = $(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
}
});
});
}
フォームを送信すると、次のことが起こります。
placeholder
この属性をサポートするブラウザーでは、validate()
関数が起動し、すべてが想定どおりに機能します。
この属性をサポートしていないブラウザーではplaceholder
、20 ~ 25 行目ですべての「プレースホルダー」がクリアされ、validate()
関数が起動します。エラーがない場合、ページは送信され、すべてが想定どおりに機能します。
サポートされていないブラウザーでは、エラーが発生した場合、通常どおり適切なフィールドが適用されますが、特定のフィールドでイベントが発生するclass="error"
までプレースホルダー テキストは返されません。blur()
これにより、これらのフィールドは空白のままになります。ラベルがない (属性のみ) ため、ユーザーは、イベントが発生placeholder
するまで、各空のフィールドに何が含まれているかを推測する必要があります。blur()
サポートされていないブラウザーが抱えるもう 1 つの問題は、プレースホルダーの修正によってvalue
属性が変更されてプレースホルダーが表示されるため、必須としてマークされたフィールドが失敗するはずのときに検証に合格することです。
Validation プラグインをプレースホルダー サポート コードで使用する簡単な方法はないようです。
プレースホルダー サポート コードを変更するか、submitHandler: {}
関数にパラメーターとして関数を追加しvalidate()
て、サポートされていないブラウザーでこれを機能させることを検討しています。