在JS Helper CakePHP中手动触发事件

时间:2012-07-03 06:29:12

标签: cakephp cakephp-2.1 cakephp-2.2 ajaxhelper

我陷入困境。我正在使用JS Helper。我使用了以下代码。

<?php $this->Js->get('#client_id')
        ->event('change', $this->Js->request(array('action' => '../ajax/get_client_location_and_process'),
                   array('update' => '#client_location_process',
                     'async' => false, 
                     'dataExpression' => true,
                     'method' => 'post',
                     'evalScripts' => true,
                     'data' => $this->Js->serializeForm(array('isForm' => True, 'inline' => True))
                     )
                   )
        );

我想在页面加载时触发更改事件。如果我使用document.ready方法,那么它无法正常工作。我无法找到JS Helper方法,我们可以在控件上显式触发一些事件。请建议代码如何在需要时对表单元素执行类似JQuery trigger()的功能。

1 个答案:

答案 0 :(得分:13)

由于您已经在jQuery中发现了.trigger(),因此您可以将它与您的视图代码一起使用:

<?php 
    // Your view code
?>
<script>$('#client_id').trigger('change');</script>

或者,如果你仍然喜欢通过PHP来做,你可以自己做一个帮手,例如:

<?php 
class ArunjsHelper extends AppHelper {
    public $helpers = array('Html');

    function trigger($element, $event, $options = array()) {
        return $this->Html->scriptBlock("$('$element').trigger('$event');");
    }
}

ArunjsHelper添加到控制台的$helpers

<?php
class SomeController extends Controller {
    public $helpers = array('Arunjs');

    // Your controller code
}

然后您可以从视图中调用它:

<h1>Hello</h1>
<p>Your usual view HTML code</p>

<?php // Trigger the change event ?>
<?php echo $this->Arunjs->trigger('#client_id', 'change'); ?>