jQuery-Validation-Engineのplaceholderに関するバグ

2017年01月21日

jQuery Validation Engineにフォームの必須入力チェックをさせたところ、なぜか、文字を入力しているのに「この項目は必須項目です」というエラーが発生しました。
つまり、フォームに入力しているのに、入力していないというエラーが出てしまったのです。

検索したところ、「jQuery-Validation-Engineで入力しているにも関わらず必須チェックが走るバグの対応」という記事がヒット。

この方の場合は、

プレースホルダが漢字のみだと、テキストエリアに値を入力しても必須チェックのエラーが出続ける
(中略)
jquery.validationEngine.js 975行目付近でプレイホルダに関わる記述をコメントアウトした。

という事でしたが、筆者の場合は「プレースホルダーと全く同一の文字列を入力すると、必須チェックのエラーが出続ける」という現象でした。
結果として、同じ対応をする事で症状が改善しました。

[javascript]
default:
var field_val = $.trim( field.val() );
var dv_placeholder = $.trim( field.attr("data-validation-placeholder") );
var placeholder = $.trim( field.attr("placeholder") );
if (
( !field_val )
|| ( dv_placeholder && field_val == dv_placeholder )
// 975行目付近でプレイホルダに関わる記述↓をコメントアウト
//|| ( placeholder && field_val == placeholder )
) {
return options.allrules[rules[i]].alertText;
}
break;
}
[/javascript]

もしかしたらバグというよりも仕様なのかもしれません。
ただ、項目の内容によっては、プレースホルダーと全く同一の文字列を入力することも充分ありうると思います。

厳密なチェックが必要な場合は、どちらにしてもPHPやCGI側で再度チェックすることになりますし、ここは利便性のためにコメントアウトしても問題ないと判断しました。