在表单displayFieldError上链接一个js操作


Chain a js action on form displayFieldError

我有一个表单,在提交时使用displayFieldError来显示字段上的错误。我需要在特定的错误条件下显示/隐藏一个容器,是否可以在上面链接js操作?

扩展和重新定义方法是面向对象开发中的一种常见做法。此外,您可以通过创建以下内容在全球范围内做到这一点:

class Form extends Form_Basic {
    function displayFieldError(){
        .. your actions ..
    }
}

这将适用于整个项目,并且不会丢失任何功能。

敏捷工具包中的所有视图都带有一个jquery类,能够调用jquery,并且是可链接的。

但是扩展视图类的对象必须在其HTML模板中实现ID=NAME属性。

下面是一个视图的例子,一个不会被隐藏的Text对象:

 $t=$this->add('Text')->set('Press Buton To Hide Me');
 $b=$this->add('Button');
 $b->js('click',
    $t->js()->hide() // hide it
    )->univ()->successMessage('Hiding Text..'); // js chained

很明显,Text对象具有javascript功能,但本身不起作用,即使附加click命令也不起作用。

下面是另一个视图示例,一个扩展的HtmlElement类,WILL将被隐藏:

 $t=$this->add('P')->set('Press Buton To Hide Me');
 $b=$this->add('Button');
 $b->js('click',
    $t->js()->hide() // hide it
    )->univ()->successMessage('Hiding Text..'); // js chained

检查这两个来源,你会立即看到差异。

因此,请确保您所指的容器是View类的类扩展,并且其关联的Template中有id="<?$_name?>"实现。

我不知道还有什么更简单的方法。