我正在尝试在我的应用程序中有一个自动完成框,其中从表中检索值。
我想在Users表中与一组用户共享一个表单。我有一个名为“共享”的链接,当我点击链接时,会生成自动完成框。
现在,当我在文本框中输入任何字母时,我希望它是自动建议的。
这是我的视图文件/views/main/home.ctp
<?php echo $javascript->link('prototype');?>
<?php echo $javascript->link('scriptaculous');?>
<?php echo $javascript->link('effects');?>
<?php echo $javascript->link('controls');?>
$(document).ready(function(){
$(".Share<?=$r['Form']['id'];?>").click(function(){
$("#share<?=$r['Form']['id'];?>").toggle("show");
});
});
<li id="Share<?php echo $r['Form']['id']?>">
<a href="#" class="Share<?=$r['Form']['id'];?>">Share</a>
<div id="share<?php echo $r['Form']['id']?>">
<?php echo $form->create('User', array('url' => '/forms/share'));?>
<?php echo $ajax->autoComplete('User.name', '/forms/autoComplete');?>
<?php echo $form->end('Share');?>
</div>
</li>
这是我的auto_complete.ctp文件:/views/forms/auto_complete.ctp
<?php echo $javascript->link('scriptaculous.js');?>
<?php echo $javascript->link('prototype.js');?>
<ul>
<?php foreach($users as $user): ?>
<li><?php echo $user['User']['name']; ?></li>
<?php endforeach; ?>
</ul>
这就是forms_controller中的函数:/ forms / autoComplete
function autoComplete()
{
$this->set('users',$this->User->find('all',array('conditions'=>array('User.name LIKE' => $this->data['User']['name'].'%'))));
$this->layout = "ajax";
}
我在auto_complete.ctp文件中得到了结果,也就是说,如果我在autoComplete文本框中键入字母's',我会在该文件中找到相应的用户,但是我没有在文本中获得这些值框。有人帮帮我。
答案 0 :(得分:1)
我自己找到了答案。
如果你使用JQuery,cakephp的自动完成功能不起作用。
我删除了该行
<?php echo $javascript->link('jquery');?>
它正在运作......
编辑:
如果您还想使用jquery并且需要jquery.js文件,则需要在jQuery中启用no-conflict模式,如站点中所示
http://docs.jquery.com/Using _
的jQuery _
与_
其他_
库