2011-02-11 1 views
3

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

フィールドヒントはvalue属性にテキストを配置し、value属性にテキストがあるため、Validationプラグインは何か間違っているとは見なしません。

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

を「ヒンティング」のコード(よく知られているの2種類があります?

ありがとう!

ドロン

答えて

3

をコードヒントと一緒に検証を使用するためのエレガントな方法はありますウォーターマークまたはプレースとして古いテキスト):フィールドの値を置き換えるものと、入力上にある種の要素を配置して、テキストが入力内にあるかのように見えるもの。

私はあなたが最初の種類を使用していると推測しています。そのためには、これらの種類を完全に避け、2番目の方法を採用するプラグインに切り替えてください。 this oneのように、このように動作するプラグインがたくさんありますが、動作方法を必ず確認してください。

ヒントコードを変更することができない場合は、2つの選択肢があります。どちらが理想的ではありませんが、おそらく1は、より多くのあなたに合うでしょう:どんなことをクリアするには、すべての入力を通じてヒンティングコード、フォームのsubmitイベントに結合し、ループ内で

を提出する上

クリア値をヒントと同じ値を持ちます。

この方法の問題点は、検証プラグインが初期化される前に実行されなければならないということです。入力時にフィールドの検証にも機能しません。ヒントテキストを元に戻すために、検証後に入力を再度チェックする必要があります。

オーバライド.val()

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

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

明らか欠点入力値を取得するには、プラグインで常に.val()を使用する必要があります。

+0

ありがとうございます! しかし、あなたがここに含める構文は、jQueryのプラグインの関数初期化コードの検証のようなものではないので、これを現在の検証コードにどのように適用するかを考え出すのは困難です。 また、hintValは私のコードで先に宣言する必要がある変数ですか? – Doron

+0

@Doron、そのコードはjQueryがロードされた後のどこにでも配置する必要があります。はい、 'hintVal'は、ヒントの値を表す変数に置き換えてください。ヒントが要素の属性 "ヒント"にあるとすると、 'hintVal'を' this.attr( 'hint') 'に置き換えます。 –

+0

HTML5標準のプレースホルダ属性を使用するのが最も良い方法です。現代のブラウザはすべてInternet Explorer以外のブラウザを使用していますが、これを使用することは現実的ではありません。私は数年前にブラウザ戦争の間にNetscape上でIE側に切り替えることを後悔します。 :( – will824