我想一个基本的:如何让Zend Decorator允许默认值?
<input type="text" />
而且我想的默认值来清除,当用户把一个值(kinda like this)。如果默认值返回onBlur,那将是理想的。
我不要想要提交默认值,如果他们离开它,然后点击提交。
我使用Zend生成表单,想象我的解决方案可以完全适合Zend表单装饰器。
我找不到任何现有的,所以我想问:
你所说的设计师吗?或者有什么能帮助我做出一个?
我想一个基本的:如何让Zend Decorator允许默认值?
<input type="text" />
而且我想的默认值来清除,当用户把一个值(kinda like this)。如果默认值返回onBlur,那将是理想的。
我不要想要提交默认值,如果他们离开它,然后点击提交。
我使用Zend生成表单,想象我的解决方案可以完全适合Zend表单装饰器。
我找不到任何现有的,所以我想问:
你所说的设计师吗?或者有什么能帮助我做出一个?
好吧,我已经建立了一个装饰,让我实现jquerypluginOlolo公布。 它检查以查看是否元件具有标签集,以及如果这样做,默认为:
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') ?>
只要使用相应的jQuery插件:defaultvalue
chrome抱怨说这个页面是恶意软件... – 2010-08-02 01:36:10
它以后工作得很好 - 肯定是一个糟糕的广告或一些东西 – 2010-08-03 02:16:15
就像@Oloolo说的那样,用jquery来说明。 而且,为了防止存储默认值,请在控制器中检查它,或者为此写一个自定义验证器。 – 2010-07-29 15:15:16