3

jQuery Validation プラグイン (http://docs.jquery.com/Plugins/Validation/) をフィールド ヒンティングと組み合わせて使用​​しようとしています。

問題は、フィールド ヒンティングが値属性にテキストを配置することです。値属性にテキストがあるため、検証プラグインは何かが間違っていることを認識しません。

私の考えでは、フィールドが空の場合、またはフィールドにフィールドヒントと同じテキストが含まれている場合、検証でエラーがスローされるようにすることでした (つまり、誰かが名フィールドに「名」を入力した場合、エラーが発生します) .

コードヒントと組み合わせて検証を使用するエレガントな方法はありますか?

ありがとう!

ドロン

4

1 に答える 1

3

2 種類の「ヒント」コード (透かしまたはプレースホルダー テキストとしてよく知られています) があります。フィールドの値を置き換えるものと、入力の上に何らかの要素を配置して、テキストが入力内にあるかのように見せるものです。

最初の種類を使用していると思われるので、単純な (そして最善の) 解決策の 1 つは、これらの種類を完全に避けて、2 番目の方法を使用するプラグインに切り替えることです。このように動作するプラグインはたくさんありますが、その動作をよく読んでください。

ヒント コードを変更できない場合は、他に 2 つの選択肢があります。どちらも理想的ではありませんが、おそらくどちらかの方が適しているでしょう:

送信時に値をクリア

ヒントコード内submitで、フォームのイベントにバインドし、すべての入力をループして、ヒントと同じ値を持つものをクリアします。

このメソッドの問題は、検証プラグインが初期化されるに実行する必要があることです。入力時にフィールドを検証する場合にも機能しません。また、ヒント テキストを元に戻すには、検証後に入力を再度確認する必要があります。

.val() をオーバーライドする

検証プラグインは jQuery を使用するため、jQuery の.val()関数をオーバーライド''して、値がヒントと等しい場合に返すことができます。

var oldVal = $.fn.val;
$.fn.val = function () {
    var returnVal = oldVal.call(this);
    if (returnVal == hintVal) returnVal = '';
    return returnVal;
};

これの明らかな欠点は、プラグインが.val()入力値を取得するために常に を使用する必要があることです。

于 2011-02-11T03:42:49.720 に答える