如果我把它放到js文件夹中,函数不起作用

时间:2014-12-05 10:31:52

标签: javascript php jquery cakephp

我有一个add.ctp文件,我可以在其中添加多行,如果我将addNumber函数添加到app/webroot/js,那么它不起作用,为什么?

我的观看文件(add.ctp

<table id="mytable">
        <tr id="number0" style="display:none;">
            <td><?php echo $this->Form->button('&nbsp;-&nbsp;',array('type'=>'button','title'=>'Click Here to remove this number')); ?></td>
            <td><?php echo $this->Form->input('lisanumbrid', array ('name'=>'data[Kontaktid][lisanumbrid][0]')) ?></td>
        </tr>
        <tr id="trAdd"><td> <?php echo $this->Form->button('+',array('type'=>'button','title'=>'Click Here to add another number','onclick'=>'addNumber()')); ?> </td><td></td><td></td><td></td><td></td></tr>
</table>
<?php
echo $this->Form->end('Lisa');
?>

添加多行功能(addNumber.js)在这里app/webroot/js

var lastRow=0;
function addNumber() { 
$("#mytable tbody>tr#number0").clone(true).attr('id','lisanumbrid'+lastRow).removeAttr('style').insertBefore("#mytable tbody>tr#trAdd"); 
$("#lisanumbrid"+lastRow+" button").attr('onclick','removeNumber('+lastRow+')'); 
$("#lisanumbrid"+lastRow+" input:first").attr('numbrid','data[Lisanumbrid]['+lastRow+'][lisanumbrid]').attr({'id':'numbridlisaNumber'+lastRow,'name': 'data[Kontaktid][lisanumbrid]['+ lastRow +']'}); 
lastRow++; 
}
    function removeNumber(x) {
        $("#lisanumbrid"+x).remove();
    }

Jquery文件与函数位于同一文件夹中,并在C:\wamp\www\cakephp-2.5.6\app\View\Layouts\default.ctp

中回显
echo $this->Html->script('jquery-2.1.1.min.js');

如果我将此addNumber函数放入add.ctp文件并放入add.ctp
<?php echo $this->Html->script(array('jquery-2.1.1.min.js'));?>
那么它的工作很好,我不想把它们放到add.ctp文件中。

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

<强>解决方案

<?php echo $this->Html->script('addNumber'); ?>

之后将add.ctp添加到</table>文件中

答案 1 :(得分:0)

您是否在add.ctp中调用addNumber.js? 您可以在app \ View \ Layouts \ default.ctp中调用此js文件,然后再调用

echo $this->Html->script(addNumber.js);

或者你可以在add.ctp里面创建一个脚本标签来调用它:

$.getScript('/epedidos/app/webroot/js/addNumber.js');

顺便说一句,如果没有定义调用此函数的错误,请在firebug上检查控制台(按键盘上的F12键)。

答案 2 :(得分:0)

您必须使用标题部分或ctp文件末尾的Html对象的脚本方法,在工作订单中添加视图中使用的所有javascript文件。

例如:

我认为你之前没有添加过jquery和你的addnumber,所以在你的ctp文件的末尾:

<?php echo $this->Html->script(array('jquery','addNumber')); ?>

注意顺序,即jquery必须在addNumber之前,并且它们都必须在webroot/js/