我有一个通过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("");
}
});
但无济于事。
答案 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("");
}
});