使用jQuery从textarea中删除初始文本

时间:2012-12-28 03:36:12

标签: jquery symfony textarea

我有一个通过Symfony构建的textarea,代码如下:

控制器:

$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("");
    }
});

但无济于事。

1 个答案:

答案 0 :(得分:1)

您的代码遇到了一些问题。

首先,对于textarea,您不使用.text(),而是使用.val()代替许多其他表单对象。 请参考焦点函数内的对象,例如$(this),而不仅仅是this。 最后,您的textarea有2个ID #message#form_message,只使用1个ID,因此HTML结果为:

<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("");
    }
});