2013-08-19 4 views
2

У меня есть группа тестов в моей системе. Возможно, что тест будет приостановлен. На странице индекса моего тестового контроллера я использую следующий код для отображения тестов.Cakephp создал javascript throws error onclick

<table> 
<tr><th>ID</th><th>Name</th><th>Updated</th><th>Actions</th></tr> 
<?php foreach ($tests as $test): ?> 
    <tr>  
    <td> 
     <?php echo $test['Test']['id']; ?> 
    </td> 
    <td class="actions"> 
     <?php 
      $status = ($test['Test']['is_paused'] == 1) ? 'Un-pause' : 'Pause'; 
      echo $this->Form->postLink($status, array('controller'=>'tests', 'action' => 'pause', $test['Test']['id'], 'admin' => 1), array('confirm'=>'Are you sure?')); 
     ?> 
     <?php 
      echo $this->Html->link('Edit', array('controller'=>'tests', 'action' => 'edit', 'admin'=>1, $test['Test']['id'])); 
     ?> 
     <?php 
      echo $this->Form->postLink('Delete', array('controller'=>'tests', 'action' => 'delete',  $test['Test']['id'], 'admin'=>1), array('confirm'=>'Are you sure?')); 
     ?> 
    </td> 
</tr> 

<?php endforeach; ?> 
</table> 

Это создает список тестов и предоставляет некоторые функции действия для каждого из них с помощью postlink из формы CakePHP помощника. Проблема, вызывающая проблемы, - кнопка паузы. Когда-то при нажатии на нее возникает следующая ошибка.

Uncaught TypeError: Object #<HTMLCollection> has no method 'submit' 

Эта ошибка почти никогда не возникает при первом нажатии паузы. Пауза может быть переключена, поэтому эта ошибка обычно появляется после того, как пауза была переключена несколько раз. Я не уверен в JS, и поскольку JS для этого автоматически создается, я не уверен, как это исправить. При возникновении этой проблемы кнопка паузы ничего не сделает, и я даже не знаю, с чего начать ее отладку. Спасибо всем, кто помогает.

UPDATE: Это HTML код, который визуализируется в браузере с помощью postlink:

<form action="/admin/tests/pause/5" name="post_521370eb05d3f" id="post_521370eb05d3f" style="display:none;" method="post"> 
    <input type="hidden" name="_method" value="POST"> 
</form> 

<a href="#" onclick="if (confirm('Are you sure?')) { document.post_521370eb05d3f.submit(); } event.returnValue = false; return false;">Un-pause</a> 

Похоже, что код document.post_521370eb05d3f.submit(); является проблемой, и если бы я должен был догадаться, я думаю, что для некоторых Причина document.post_521370eb05d3f не имеет метода отправки. Я не уверен, как это исправить.

+0

Вы пытались нажать delete? – SaidbakR

+1

«Этот метод создает элемент

. Поэтому не используйте этот метод в существующей форме. Вместо этого вы должны добавить кнопку отправки с помощью FormHelper :: submit()« http://book.cakephp.org/2.0/en/ core-libraries/helpers/form.html # FormHelper :: postLink – SaidbakR

+0

@ sємsєм Я рассмотрел эту часть руководства. Я не мог заставить его работать. Я должен просмотреть, будет ли более крупная форма обертывать эту существующую. – usumoio

ответ

1
$this->Html->link(__('Some Text to Click'), array(
    'admin' => true, 
    'action' => 'delete', 
    $delete_id, 
), null, 'Are you sure?'));