我正在尝试做一个stackoverflow一样的标签系统。我遵循这个教程(在法语):http://www.formation-cakephp.com/34/autocomplete-en-ajax,它使用Prototype和Scriptaculous。当然,我将它应用到我的项目中
出现以下错误:
this.element.setAttribute is not a function : controls.js Line 86
其对应于
this.element.setAttribute('autocomplete','off');
在control.js文件中
我对 AJAX 还很陌生,所以我不知道自己做错了什么...
如果您需要任何文件中的代码,请告诉我!
view.ctp:
<div class="input">
<label>Tags :</label>
<?php e($ajax->autoComplete(
'Tag.tag',
'/tags/autocomplete',
array(
'minChars' => 3,
'indicator' => 'ajaxloader'
)
)); ?>
<div id="ajaxloader" style="display:none;">
Chargement...
</div>
控制器:
function autocomplete()
{
$recherche = utf8_decode($this->data['Tag']['tag']);
$tags = $this->Tag->find(
'all',
array(
'fields' => 'DISTINCT tag',
'conditions' => "tag LIKE '$recherche%'",
'order' => 'tag',
'limit' => 10
)
);
$this->set(compact('tag', 'recherche'));
}
2条答案
按热度按时间isr3a4wc1#
jQuery、scriptaculous和prototype不能很好地配合使用,但是可以通过将jQuery置于无冲突模式来解决这个问题。
var $j = jQuery.noConflict(); // $j is now an alias to the jQuery function; creating the new alias is optional.
现在,对于jQuery,使用
$j
而不是$
,例如:$j(document).ready(function() { $j( "div" ).hide(); });
有关避免jQuery冲突的更多信息,请参阅以下内容:https://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/
iyzzxitl2#
看起来scriptaculous并不能很好的处理j-query。当我删除j-query链接时,我不再收到错误。这绝对不是一个理想的解决方案,但我想我应该分享我的发现。