2012-07-03 23 views
6

Utknąłem w sytuacji. Używam pomocy JS. Użyłem następującego kodu.Zdarzenie wyzwalające ręcznie w 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)) 
        ) 
        ) 
     ); 

Chcę wywołać zdarzenie change podczas ładowania strony. Jeśli używam metody document.ready, to nie działa. i nie mogę znaleźć metody JS Helper, w której możemy jawnie wywołać pewne zdarzenie na elementach sterujących. Proszę zasugerować kod, w jaki sposób mogę wykonać funkcję wyzwalacza JQuery() w elementach formularzy, gdy jest to potrzebne.

+0

Próbuję dowiedzieć się JQuery.trigger() równoważne kod w JsHelper. Każda pomoc doceniona. –

+3

Osobiście nie sądzę, że 'JSHelper' został stworzony do tego typu rzeczy, tak naprawdę jest to tylko przydatny wniosek ajax z mojego doświadczenia. Powiedziałbym, że w dłuższej perspektywie sprawisz, że będziesz o wiele jaśniejszy/łatwiejszy, jeśli po prostu napiszesz JS w pliku .js ... – Dunhamzzz

+0

Masz to, czego szukasz? – uzyn

Odpowiedz

12

Skoro już dowiedział się o .trigger() w jQuery, można po prostu używać go wraz z kodem widzenia:

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

Alternatywnie, jeśli nadal wolą to zrobić za pośrednictwem PHP, można chyba zrobić własny pomocnik, np .:

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

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

Dodaj do $helpersArunjsHelper w kontrolerze:

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

    // Your controller code 
} 

Można połączyć go z pola widzenia:

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

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