我想要一个基本的:
<input type="text" />
我想在用户输入值(kinda like this)时清除默认值。如果在Blur上返回默认值,那将是理想的。
我不希望保留默认值,如果他们离开并点击提交。
我正在使用Zend生成表单,并想象我的解决方案可以完全适合Zend表单装饰器。
我找不到任何现有的,所以我问:
你有说装饰者吗?或者有什么东西可以帮我制作一个?答案 0 :(得分:1)
只需使用相应的jQuery插件:defaultvalue
答案 1 :(得分:0)
好的,我已经构建了一个装饰器,允许我实现发布的jquery plugin Ololo。 它检查元素是否具有Label集,如果是,则默认为:
require_once 'Zend/Form/Decorator/Abstract.php';
class Application_Form_Decorator_DefaultEnabledInput extends Zend_Form_Decorator_Abstract
{
private $attribs = array();
public function render($content)
{
$element = $this->getElement();
if(get_class($element) != 'Zend_Form_Element_Text') throw new Exception("Application_Form_Decorator_DefaultEnabledInput only works on text fields");
$element->setAttrib('type', 'text');
$element->setAttrib('name', htmlspecialchars($element->getName()));
$element->setAttrib('value', htmlspecialchars($element->getValue()));
$attribs = '';
$default = $element->getLabel();
if($default)
{
$element->setAttrib('rel', $default);
$element->setAttrib('title', $default);
$class = $element->getAttrib('class');
$element->setAttrib('class', "$class hasDefault");
$default = "";
}
foreach($element->getAttribs() as $key => $val) $attribs .= "$key='$val' ";
return "<input $attribs/>";
}
}
它允许我在表单对象中定义一个默认值(使用setLabel)。
$element = $this->createElement('text', 'suburb');
$element->setDecorators(array('DefaultEnabledInput'));
$element->setLabel('enter suburb here');
$this->addElement($element);
然后我需要做的就是确保页面上包含查询和插件,以及这段代码:
$(document).ready(function() {
// default values
$('.hasDefault').each(function(){
$(this).defaultValue();
});
});
然后在模板中,我可以像这样显示对象:
<?= $this->form->getElement('suburb') ?>