如何在cakePHP视图中添加javascript代码

时间:2011-03-16 12:12:45

标签: cakephp

我在视图页面中编写了以下代码

<script type="text/javascript">
function filldetails()
{
    document.getElementById('FirstName').value  = "hjshjsh"; 
}
</script>
echo $this->Form->select('students',$student_name,array('onchange' =>filldetails()));

但我收到错误消息

call to undefined function filldetails()

如何解决此错误?

2 个答案:

答案 0 :(得分:5)

应为'onchange' => 'filldetails()'

答案 1 :(得分:0)

除非你的项目有一个特定的理由要避免使用JS框架,否则你将通过使用jQuery而不是纯Javascript来避免很多长期的麻烦。

重写你的观点:

<?php
  $selectDomId = $this->Form->domId('students');
  $firstnameDomId = $this->Form->domId('Student.first_name');

  $this->Html->scriptBlock("
      jQuery(function($){
        $('#{$selectDomId}').change(function(event){
          $('#{$firstnameDomId}').val( $(this).val() );
        });
      });
  ",array('inline'=>false));
?>
<?php echo $this->Form->select('students',$student_name,$this->Form->domId(array(),'students'))?>
<?php echo $this->Form->input('Student.first_name')?>

jQuery负责处理onChange事件处理程序,因此它不会混淆你的HTML,只需挂钩你的下拉菜单的更改事件。

使用Helper::domId意味着您不必担心 CakePHP的帮助者如何生成id属性,这是可靠性和可维护性的净赢。 / p>