6

私は状況で立ち往生しました。JSヘルパーを使用しています。次のコードを使用しました。

<?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メソッドを使用している場合、それは機能していません。また、コントロールでイベントを明示的にトリガーできるJSHelperメソッドが見つかりません。必要なときにいつでもフォーム要素でJQuerytrigger()のような機能を実行する方法をコードに提案してください。

4

1 に答える 1

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'); ?>
于 2012-07-20T14:22:04.957 に答える