1

次のコードを使用して、Symfony を介して構築されたテキストエリアがあります。

コントローラ:

$form = $this->createFormBuilder($defaultData)
    ->add('name', 'text', array('label' => 'Name:'))
    ->add('email', 'email', array('label' => 'Email Address:'))
    ->add('subject', 'text', array('label' => 'Subject:'))
    ->add('message', 'textarea', array('label' => 'Message:'))
    ->getForm();

テンプレート:

<div>
    {{ form_errors(form.message) }}
    <p class="label">{{ form_label(form.message) }}</p>
    {{ form_widget(form.message, { 'attr' : { 'class' : 'input', 'id' : 'message', 'rows' : '8' } }) }}
</div>

これにより、次の HTML が生成されます。

<div>   
    <p class="label"><label for="form_message" class="required">Message:</label></p>
    <textarea id="form_message" name="form[message]" required="required"    class="input" id="message" rows="8">Type your message here</textarea>
</div>

今、テキスト領域がフォーカスされているとき、最初のテキストを消したいです。私はそれを行う方法がわかりません。私はもう試した:

$("#message").focus(function() {
    if (this.text() == "Type your message here") {
        this.text("");
    }
});

しかし、役に立たない。

4

1 に答える 1

1

コードにいくつか問題があります。

最初は、使用しないtextareaについては、他の多くのフォームオブジェクトと同様に.text()使用します。だけでなく.val()、フォーカス関数内のオブジェクトを参照してください。最後に、textareaには2つのIDがあり、1つのIDのみを使用するため、HTMLは次のようになります。$(this)this#message#form_message

<div>   
  <p class="label"><label for="form_message" class="required">Message:</label></p>
  <textarea name="form[message]" required="required" class="input" id="message" rows="8">Type your message here</textarea>
</div>

そして、修正されたjQuery関数は次のようになります。

$("#message").focus(function() {
    if ($(this).val() == "Type your message here") {
        $(this).val("");
    }
});
于 2012-12-28T03:41:11.847 に答える