複数の入力フィールドを含む数式を含むサイトがあります。これらすべての入力フィールドには、説明を含むプレースホルダー属性があります。しかし、プレースホルダー属性が IE で機能しないことは誰もが知っているので、jQuery Placeholder Enhanced を使用して、プレースホルダーが IE に表示されるようにしています。これは機能します。
しかし同時に、jQuery validate を使用してフォームを検証しています。送信ボタンを押して検証に失敗すると、IE ですべてのプレースホルダーが消えてしまいます。
私の検証は次のようになります。
$(".myForm").validate({
submitHandler: function (form) {
$.post("/handlers/CustomHandler.ashx", $(".myForm").serialize(),
function (data) {
if (data.result.type == "message") {
$(".myForm").parent().html(data.result.data);
}
else if (data.result.type == "redirect") {
location.href = data.result.data;
}
}
);
}
});
次のように、invalidHandler オプションを使用して、placeholderEnhanced() 関数を再度起動しようとしました。
$(".myForm").validate({
submitHandler: function (form) {
$.post("/handlers/CustomHandler.ashx", $(".myForm").serialize(),
function (data) {
if (data.result.type == "message") {
$(".myForm").parent().html(data.result.data);
}
else if (data.result.type == "redirect") {
location.href = data.result.data;
}
}
);
},
invalidHandler: function () {
if (!Modernizr.input.placeholder) {
$('input[placeholder], textarea[placeholder]').placeholderEnhanced();
}
}
});
しかし、残念ながらそれはうまくいきません。この行をコピーして貼り付ける場合:
$('input[placeholder], textarea[placeholder]').placeholderEnhanced();
IE のコンソールに入力し、検証でいくつかのエラーが見つかった後に起動すると、プレースホルダーが再び表示されます。また、アラート(「フォームにエラーがありました」)を入れてみました。フォームの送信ボタンを押すと表示されます。
誰でも何が間違っているのか、そして送信ボタンを押して検証が無効になった後、IEでプレースホルダーが消えないようにする方法についての手がかりを持っています。
前もって感謝します!
/キム