2012-07-03 12 views
6

Mi sono bloccato in una situazione. Sto usando JS Helper. Ho usato il seguente codice.Attivazione manuale dell'evento in 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)) 
        ) 
        ) 
     ); 

Desidero attivare l'evento di modifica al caricamento della pagina. Se sto usando il metodo document.ready, allora non funziona. e non sono riuscito a trovare il metodo JS Helper in cui è possibile attivare esplicitamente alcuni eventi sui controlli. Si prega di suggerire il codice come posso eseguire JQuery trigger() come funzionalità sugli elementi del modulo ogni volta che ne ho bisogno.

+0

sto cercando di scoprire JQuery.trigger() codice equivalente in JsHelper. Qualsiasi aiuto molto apprezzato. –

+3

Personalmente non penso che il 'JSHelper' sia stato creato per questo genere di cose, è solo per le richieste ajax della mia esperienza. Direi che ti renderai molto più chiaro/più facile a lungo termine se scrivi il JS in un file .js ... – Dunhamzzz

+0

Hai ottenuto quello che stai cercando? – uzyn

risposta

12

Dal momento che avete già scoperto su .trigger() in jQuery, si può semplicemente utilizzare con il vostro codice di vista:

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

In alternativa, se si continua a preferire di farlo tramite PHP, è possibile forse fare il vostro proprio aiutante, ad esempio .:

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

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

Aggiungi ArunjsHelper-$helpers al controllore:

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

    // Your controller code 
} 

È quindi possibile chiamare da vista:

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

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