0

のフォームフィールドにデフォルト値を設定するには、ここで美しく説明されているように、jQueryと組み合わせsymfony2た属性を使用します。rel

    $builder->add('title', 'text', array(
        'attr'=> array(
            'class'=>'prepopulate',
            'rel'=>'Enter a title here...',
        )
    ));

これは完全に機能し、次のようになります。


ここに画像の説明を入力してください


ご覧のとおり、フィールドには「ここにタイトルを入力してください...」と事前に入力されています。フォームをそのまま検証すると、デフォルト値が挿入されるため検証は行われません(これは理にかなっています)。

ユーザーがこのフィールドをカスタマイズし、デフォルト値でフォームを送信するだけではないことを確認したい...

フィールドがrel属性と同じ値であるかどうかを確認する方法はありますか?

4

2 に答える 2

1

うーん...

エンティティのアノテーションでこれを試すことができます。

@Assert\Regex("/^(?!Enter a title here\.\.\.)/")

またはさらに良い:

/**
 * @Assert\Regex(
 *     pattern="/^Enter a title here\.\.\.$/",
 *     match=false,
 *     message="Please enter a title."
 * )
 */
于 2012-11-14T06:37:24.057 に答える
1

クライアント側でこれを行い、rel属性を送信されたデータと比較できます。値が同じである場合、オブジェクトをクリアします。

$(function() {
    // When we submit the form
    $('form').submit(function() {

        //iterate over all the elements of the class "prepopulate"
        jQuery('.prepopulate').each(function(){

            //compare the values submitted vs rel attribute
            if( jQuery(this).val() == jQuery(this).attr('rel'))
                jQuery(this).val('');
        });
        return true; 
    });
});
于 2012-11-14T08:36:32.030 に答える