2012-03-12 5 views
0

私はこれを行う方法を尋ねる投稿を見てきましたが、私はJQueryを初めて使っていますので、フォームがどのように設定されているかに役立つ何かが不足している可能性があります。透かしを入れたテキストボックスを検証する

私はテキストボックスにウォーターマーク "従業員の姓"を持つ検索ボックスを備えた古典的なASPページを持っています。私はこのフィールドを必要に応じて検証したい。透かしは正常に動作していますが、検証は正常に動作しますが、透かしが存在する場合は正しく検証されません。私はそれが入力値としてwatermarkを見ていると思いますか?

ウォーターマークを保持してこのフィールドの検証方法についてのヒントを教えてください。ここで私が使用しているコードです:

<script type="text/javascript"> 
//Form watermarks 
    $(document).ready(function() { 
     $('.watermarked_title').watermark('watermark'); 
    }); 
    </script> 


    <script> 
//Validation 
    jQuery(document).ready(function(){ 
     // binds form submission and fields to the validation engine      
     jQuery("#SearchForm").validationEngine(); 
    }); 

    </script> 

フォームコード:

<form action="EmpSearch.asp" method="Post" id="SearchForm">       
    <input name="SearchLN" id="SearchLN" type="text" size="22" class="validate[required] searchBox watermarked_title" title="Employee Last Name" >&nbsp;&nbsp; 
    <input type="submit" class="button" Value="Search">      
</form> 
+0

あなたの検証コードは何ですか?それが最も重要な部分です。 @ gdoron: 'placeholder'と思う、私は想像する。 –

+0

透かしは、ユーザーがテキストを入力する前にかすかなテキストの入力です –

+0

@DavidThomas。見つけた、ありがとう。下の私の答えを参照してください... – gdoron

答えて

1

透かし値が前に提出クリアする必要があります。

フォームの提出を - プラグインは自動的にすべての透かしをクリーンアップフォームの提出前に、送信する前に透かしを手動で削除する必要はありません。あなたは右のそれを使用している場合

...:

同じ要素にウォーターマークと検証プラグインを使用するには、

あなたは透かしがあるため、フォームの検証が失敗していることが判明した場合検証が行われる前に がクリアされていない場合は、 にウォーターマークと検証を設定する順序を調整する必要があります。

適切な順序は、他のものの前に常にウォーターマークを設定することです。特に検証の前に 。これは、jQueryがフォームの送信中にイベントの順序を慎重に制御し、 でそれらを設定したためです。最初に検証を設定すると、透かしが消去される前に フォームが検証されます。

正しい順序は 次の例のように、正しい順序でコードの行を配置するなど くらい簡単ですに透かしと検証の設定:

$('#myElement').watermark('Required'); 
$('#myForm').validate(); 

source

+0

助けてくれてありがとう。私はまだこれをすべて学んでいるので、私はそれを認識しませんでした。しかし、これは私がすでに適切な順序でそれを持っていた順序ではありませんか? – Cineno28

+0

@ Cineno28。私はあなたが問題ではないか分からない。私はあなたのためにそれをデバッグすることはできません。 _ "フォーム提出 - フォーム提出前にプラグインが自動的にすべての透かしをクリーンアップするので、透かしを手動で削除してから提出する必要はありません。" _ – gdoron

+1

ありがとうございました。私は注文は正しかったが、いくつかの編集をしたが、今は機能している。これは間違いなく答えでした。ありがとう。 – Cineno28

0

あなたはフォームのサブミットイベントを処理し、プレースホルダーのフィールドをすべてクリアする必要があります(ウォーターマークとは画像用ではありません)。

$('#myform').submit(function(){ 
    $('.placeholder').each(function(){ 
     var $placeholder = $(this); 
     if ($placeholder.val() == $placeholder.attr('title')) { 
      $placeholder.val(''); 
     } 
    }); 
}); 

これは、あなたがこれらのプレースホルダのフィールドに「プレースホルダー」クラスを与え、あなたはプレースホルダーテキスト(かなり一般的な)を格納するフィールドのtitle属性を使用していることをことを想定しています。そうでない場合は、少し修正する必要があります。

+0

私の[回答](http://stackoverflow.com/a/9673295/601179)を参照してください。「透かし」は彼が使用しているプラ​​グインです。 – gdoron

+0

ええ、聞いたことがありますが、それを「透かし」と呼んでいるそのプラグインを書いた人を叩きたいです。 –

+0

@Chris Prattクリスおかげさまで、これを試してみます。うん、私は見つかったプラグインを使用しているので、プレースホルダが適切な用語であるかどうかわからなかった。 – Cineno28

関連する問題