2012-07-03 33 views
6

Tôi bị kẹt trong một tình huống. Tôi đang sử dụng JS Helper. Tôi đã sử dụng đoạn mã sau.Kích hoạt sự kiện thủ công trong 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)) 
        ) 
        ) 
     ); 

Tôi muốn kích hoạt sự kiện thay đổi khi tải trang. Nếu tôi đang sử dụng phương pháp document.ready thì nó không hoạt động. và tôi không thể tìm thấy phương thức Trình trợ giúp JS nơi chúng tôi có thể kích hoạt một số sự kiện trên điều khiển một cách rõ ràng. Xin vui lòng đề nghị mã như thế nào tôi có thể thực hiện kích hoạt JQuery() như chức năng trên các yếu tố hình thức bất cứ khi nào tôi cần nó.

+0

tôi đang cố gắng để tìm hiểu JQuery.trigger() mã tương đương trong JsHelper. Bất kỳ giúp đỡ nhiều đánh giá cao. –

+3

Cá nhân tôi không nghĩ rằng 'JSHelper' đã được tạo ra cho loại điều này, nó thực sự chỉ dành cho các yêu cầu ajax tiện dụng từ kinh nghiệm của tôi. Tôi sẽ nói rằng bạn sẽ làm cho thind rõ ràng hơn/dễ dàng hơn trong dài hạn nếu bạn chỉ cần viết JS trong một tập tin .js ... – Dunhamzzz

+0

Bạn có những gì bạn đang tìm kiếm? – uzyn

Trả lời

12

Vì bạn đã phát hiện ra khoảng .trigger() trong jQuery, bạn chỉ có thể sử dụng nó cùng với mã xem của bạn:

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

Ngoài ra, nếu bạn vẫn thích để làm điều đó thông qua PHP, bạn có lẽ có thể làm của riêng bạn helper, Eg .:

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

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

Thêm ArunjsHelper-$helpers tại điều khiển:

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

    // Your controller code 
} 

Sau đó bạn có thể gọi nó là từ quan điểm:

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

<?php // Trigger the change event ?> 
<?php echo $this->Arunjs->trigger('#client_id', 'change'); ?> 
Các vấn đề liên quan