2012-07-03 3 views
6

Я застрял в ситуации. Я использую JS Helper. Я использовал следующий код.Запуск события вручную в JS Helper CakePHP

<?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() как функциональность элементов формы всякий раз, когда мне это нужно.

+0

Я пытаюсь выяснить JQuery.trigger() эквивалентный код в JsHelper. Любая помощь очень ценится. –

+3

Лично я не думаю, что «JSHelper» был создан для такого рода вещей, это действительно только для удобных запросов ajax из моего опыта. Я бы сказал, что вы сделаете намного проще/проще в долгосрочной перспективе, если вы просто напишете JS в файле .js ... – Dunhamzzz

+0

У вас есть то, что вы ищете? – uzyn

ответ

12

Так как вы уже выяснили о .trigger() в JQuery, вы можете просто использовать его вместе с вашим видом кода:

<?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'); ?> 
Смежные вопросы